运用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)
很好的帖子
能把这个程序再详细说一下么?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);
这几个语句不是很懂什么意思啊,谢谢!!!
回复 沙发 嘟嘟06 的帖子
建议看下基础书谢谢
上面的例子,运行的时候为什么老是提示没定义b呢??
页:
[1]