MATLAB使用nlinfit函数时出问题

y=[0.49730.50290.50850.51420.51980.52550.53110.53680.54260.54830.55410.55980.56570.57... y=[0.4973 0.5029 0.5085 0.5142 0.5198 0.5255 0.5311 0.5368 0.5426 0.5483 0.5541 0.5598 0.5657 0.5715 0.5774 0.5833 0.5892 0.5952 0.6013 0.6074 0.6135];
L=[1.1496 1.1822 1.2153 1.2491 1.2832 1.318 1.3534 1.3894 1.4262 1.4634 1.5015 1.5402 1.5799 1.6201 1.6613 1.7033 1.7462 1.7901 1.8350 1.8809 1.9279];
T=[14.7 14.75 14.8 14.85 14.9 14.95 15 15.05 15.1 15.15 15.2 15.25 15.3 15.35 15.4 15.45 15.5 15.55 15.6 15.65 15.7];
func=inline('cos(beta(1))*sqrt(L^2+beta(2)^2)-sin((T-28.421)*15*pi/180)','beta','L','T');
beta=nlinfit(L,T,y,func,[0 0]);
a=beta(1),h=beta(2)
结果
错误使用 internal.stats.parseArgs (line 42)
Wrong number of arguments.

出错 nlinfit>parseInVarargin (line 822)
[errModel, weights, options, errModelParameter, maxweight] = ...

出错 nlinfit (line 189)
[errormodel, weights, errorparam, options, iterative, maxweight] = parseInVarargin(varargin(:));
展开
 我来答
lhmhz
高粉答主

推荐于2017-12-15 · 专注matlab等在各领域中的应用。
lhmhz
采纳数:7264 获赞数:17015

向TA提问 私信TA
展开全部
nlinfit()函数错误使用,这是一个比较常见使用错误。解决的方法:

1、使用时,应把变量 L、T看成 x 向量组。即

x=[ L T]
2、自定义函数应写成
func=inline('cos(beta(1))*sqrt(x(:,1)^2+beta(2)^2)-sin((x(:,2)-28.421)*15*pi/180)','beta','x');

3、nlinfit()函数应写成
beta=nlinfit(x,y,func,[0 0]);

如还有问题,可以再交流。
追问

然后他又出现了这样的问题

追答
把x、y行向量改成列向量的形式
x=[L' T'];
y=y';
func=inline('cos(beta(1)).*sqrt(x(:,1).^2+beta(2).^2)-sin((x(:,2)-28.421)*15*pi/180)','beta','x');
beta=nlinfit(x,y,func,[rand();rand()]);

经运行,其拟合效果不太理想。应修改拟合函数。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式