zzrrbb 发表于 2006-7-28 16:57

运用MATLAB生成多参数非线性拟合函数的方法

问题的提出



x=;



y=;



z=;



求 z(i)=f(x(i),y(i))



一: 多项式拟和

采用最小二乘法拟和,事先设定多项式表达形式,用最小二乘法优化出系数



程序如下:



%定义函数,求系数



function =xishu(x ,y)

A=;



%主函数



x=;

y=;

k=1;

for i=1:4

    for j=1:5

      A(k,:)=xishu(x(i) ,y(j));

      k=k+1;

    end

end



Zo=';



=lsqlin(A,Zo)



%拟和函数的形式



表达式=C'*A;



二非线性拟和

工程中常用的拟和函数表达式通常以e指数居多,lsqlin命令不适合了。



%定义一个合适的函数表达形式



function y=hanshu(b,A);

a0=b(1);

a1=b(2);

a2=b(3);

a3=b(4);

a4=b(5);

lab=A(:,1);

cap=A(:,2);

xw=(1./(lab.^1.5)-a2*ones(20,1)).*(a3*cap+a4*ones(20,1));

y=a0*ones(20,1)+a1.*exp(xw);



%主函数求系数



x=;

y=;

z=;

A=;

b0=;

=nlinfit(b,z','hanshu',b0);

y=hanshu(b,A)

嘟嘟06 发表于 2008-9-19 11:07

很好的帖子

能把这个程序再详细说一下么?
lab=A(:,1);

cap=A(:,2);

xw=(1./(lab.^1.5)-a2*ones(20,1)).*(a3*cap+a4*ones(20,1));

y=a0*ones(20,1)+a1.*exp(xw);
这几个语句不是很懂什么意思啊,谢谢!!!

sigma665 发表于 2008-9-19 13:49

回复 沙发 嘟嘟06 的帖子

建议看下基础书

嘟嘟06 发表于 2008-9-19 14:16

谢谢

上面的例子,运行的时候为什么老是提示没定义b呢??
页: [1]
查看完整版本: 运用MATLAB生成多参数非线性拟合函数的方法