请问我这段matlab程序有什么问题?x=[600 600 600 600 600 600 600 500 500 500 500 500 500 500 400 400 400 400 400 400 400 300 300 300 300 300 300 300 200 200 200 200 200 200 200];y=[4 6 8 10 12 14 16 4 6 8 10 12 14 16 4 6 8 10 12 14 16 4 6 8
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/26 07:53:23
请问我这段matlab程序有什么问题?x=[600 600 600 600 600 600 600 500 500 500 500 500 500 500 400 400 400 400 400 400 400 300 300 300 300 300 300 300 200 200 200 200 200 200 200];y=[4 6 8 10 12 14 16 4 6 8 10 12 14 16 4 6 8 10 12 14 16 4 6 8
请问我这段matlab程序有什么问题?
x=[600 600 600 600 600 600 600 500 500 500 500 500 500 500 400 400 400 400 400 400 400 300 300 300 300 300 300 300 200 200 200 200 200 200 200];
y=[4 6 8 10 12 14 16 4 6 8 10 12 14 16 4 6 8 10 12 14 16 4 6 8 10 12 14 16 4 6 8 10 12 14 16];
z=[0 0.20 0.38 0.56 0.71 0.88 0.98 0 0.14 0.29 0.41 0.56 0.69 0.81 0 0.11 0.21 0.39 0.48 0.56 0.64 0 0.12 0.20 0.31 0.40 0.48 0.58 0 0.11 0.26 0.43 0.54 0.67 0.79];
f=@(p,x,y)(p(1)*x.^3+p(2)*x.^2+p(3)*x+p(4)*y+p(5));
p=lsqcurvefit(f,rand(1,2),[x;y],z);
报错如下:
Error using ==> optim\private\lsqncommon
User supplied function failed with the following error:
Index exceeds matrix dimensions.
Error in ==> lsqcurvefit at 149
[x,Resnorm,FVAL,EXITFLAG,OUTPUT,LAMBDA,JACOB] = ...
Error in ==> Untitled at 7
p=lsqcurvefit(f,rand(1,2),[x;y],z);%p=[a b]
请问我应该如何修改?
请问我这段matlab程序有什么问题?x=[600 600 600 600 600 600 600 500 500 500 500 500 500 500 400 400 400 400 400 400 400 300 300 300 300 300 300 300 200 200 200 200 200 200 200];y=[4 6 8 10 12 14 16 4 6 8 10 12 14 16 4 6 8 10 12 14 16 4 6 8
lsqcurvefit多输入的函数貌似不能直接用的.
吧x和y作为一个复数的实部和虚部,就变成单输入,可以运行了
x=[600 600 600 600 600 600 600 500 500 500 500 500 500 500 400 400 400 400 400 400 400 300 300 300 300 300 300 300 200 200 200 200 200 200 200];
y=[4 6 8 10 12 14 16 4 6 8 10 12 14 16 4 6 8 10 12 14 16 4 6 8 10 12 14 16 4 6 8 10 12 14 16];
z=[0 0.20 0.38 0.56 0.71 0.88 0.98 0 0.14 0.29 0.41 0.56 0.69 0.81 0 0.11 0.21 0.39 0.48 0.56 0.64 0 0.12 0.20 0.31 0.40 0.48 0.58 0 0.11 0.26 0.43 0.54 0.67 0.79];
x=x+y.*i;
f=@(p,x)(p(1)*real(x).^3+p(2)*real(x).^2+p(3)*real(x)+p(4)*imag(x)+p(5));
p=lsqcurvefit(f,rand(1,5),x,z);