matlab数据拟合nlinfit的问题,试了好多遍,还是不行,求助~ 5
x=[100,100;107,105;114,110;122,117;131,122;138,121;149,125;163,134;176,140;185,123;198,143;208,147;216,148;226,155;236,156;244,152;266,156;298,183;335,198;366,201;387,196;407,194;417,146;431,161];
Q=[100,101,112,122,124,122,143,152,151,126,155,159,153,177,184,169,189,225,227,223,218,231,179,240];
k0=[1,0.6];
k=nlinfit(x,Q,f,k0)
sse=sum((Q-f(b,x)).^2)
plot(x(:,1),x(:,2),Q,'k+',90:.1:600,90:.1:300,f(k,(90:.1:600,90:.1:300)),'k')
axis([80,700,80,400,80,400]),legend('测量值','理论值')
运行结果是:Error: Unexpected MATLAB operator.
修改了好多遍,还是不行,希望哪位懂的人能帮帮我,不胜感激~~~ 展开
错误语句一:语句f=@(k,x)k(1).*(x(:,1).^k(2))*.(x(:,2).^(1-k(2)));中,点乘符号加位置错误。应为 f=@(k,x)k(1).*(x(:,1).^k(2)).*(x(:,2).^(1-k(2)));
错误语句二:x与Q不是同一类型的向量,因x是列向量而Q是行向量,应而可以将 Q行向量改为列向量就可以。
错误语句三:语句sse=sum((Q-f(b,x)).^2)中的f(b,x)应该为f(k,x)
错误语句四:plot()函数应该为plot3()函数
正确程序为
clc,clear all,close all
f=@(k,x)k(1).*(x(:,1).^k(2)).*(x(:,2).^(1-k(2)));
x=[。。。]
Q=。。。]
k0=[1,0.6];
k=nlinfit(x,Q,f,k0)
sse=sum((Q-f(k,x)).^2)
plot3(x(:,1),x(:,2),Q,'k+'),hold on
X1=linspace(90,600,5000);X2=linspace(90,300,5000);X=[X1' X2'];
plot3(X1',X2',f(k,X),'k')
axis([80,700,80,400,80,400]),legend('测量值','理论值')