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(:)); 展开
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(:)); 展开
1个回答
展开全部
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]);
如还有问题,可以再交流。
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()]);
经运行,其拟合效果不太理想。应修改拟合函数。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询