matlab非线性拟合我的方程为F=K*X+C*Y+Z*(1-exp(-B*y^2))-F0F,X,Y,F0,都是已知的列向量,请问怎么拟合参数K,C,Z,B啊.我的F是已经知道了的,难道不要用到吗

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/11 00:56:31
matlab非线性拟合我的方程为F=K*X+C*Y+Z*(1-exp(-B*y^2))-F0F,X,Y,F0,都是已知的列向量,请问怎么拟合参数K,C,Z,B啊.我的F是已经知道了的,难道不要用到吗

matlab非线性拟合我的方程为F=K*X+C*Y+Z*(1-exp(-B*y^2))-F0F,X,Y,F0,都是已知的列向量,请问怎么拟合参数K,C,Z,B啊.我的F是已经知道了的,难道不要用到吗
matlab非线性拟合
我的方程为F=K*X+C*Y+Z*(1-exp(-B*y^2))-F0
F,X,Y,F0,都是已知的列向量,请问怎么拟合参数K,C,Z,B啊.
我的F是已经知道了的,难道不要用到吗

matlab非线性拟合我的方程为F=K*X+C*Y+Z*(1-exp(-B*y^2))-F0F,X,Y,F0,都是已知的列向量,请问怎么拟合参数K,C,Z,B啊.我的F是已经知道了的,难道不要用到吗
在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function F=zhidao_31(a,x)
%其中K,C,Z,B分别用a(1),a(2),a(3),a(4)代替
%X,Y,F0分别用x(:,1),x(:,2),x(:,3)代替
F=a(1)*x(:,1)+a(2)*x(:,2)+a(3)*(1-exp(-a(4)*x(:,2).^2))-x(:,3);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
以下是测试:在Matlab下面输入:
%先由已经的x,y,F0和已知的k,c,z,b来产生F,然后通过x,y,F0,F
%验证一下:能否得到我们刚才所选用的参数k,c,z,b
%下面以随机数为例
x=rand(100,1);
y=rand(100,1);
F0=rand(100,1);
k=1;
c=1.5;
z=2.5;
b=3.5;
X=[x,y,F0];
F=zhidao_31([k,c,z,b],X);
[A,res]=lsqcurvefit('zhidao_31',ones(1,4),X,F);
A
得到的结果:
A =
1.0033 1.4446 2.5520 3.4853
跟k,c,z,b的值大致一样.
你的问题:
你设好x,y,F0,F后,在Matlab下输入:
[A,res]=lsqcurvefit('zhidao_31',ones(1,4),[x,y,F0],F); %注意你的x,y可能是大写的.
A
就可以了.