matlab多项式拟合

问题描述:

matlab多项式拟合
function p=naorthfit(x,y,m)
%用途:多项式拟合
%格式:x,y为数据向量,m为拟合正交多项式次数,p返回多项式
%系数降幂排列
psi=fliplr(eye(m+1,m+1));
p=zeros(1,m+1);
psi(2,m+1)=-sum(x)/length(x);
for k=2:m
t=polyval(psi(k,:),x);t1=polyval(psi(k-1,:),x);
a=(x.*t)*t'/(t*t');
b=(t*t')/(t1*t1');
psi(k+1,:)=conv([1 -a],psi(k,2:m+1))-b*psi(k-1,:);
end
for k=1:m
t=polyval(psi(k+1,:),x);
p(k+1)=y*t'/(t*t');
end
p=p*psi;
1个回答 分类:综合 2014-12-10

问题解答:

我来补答
function p=naorthfit(x,y,m)
%用途:多项式拟合
%格式:x,y为数据向量,m为拟合正交多项式次数,p返回多项式
%系数降幂排列
psi=fliplr(eye(m+1,m+1));%转动m+1阶单位矩阵,赋值给psi
p=zeros(1,m+1);%p是1×(m+1)阶的零矩阵
psi(2,m+1)=-sum(x)/length(x);%将psi(矩阵)中的第2行、第(m+1)列的元素变为x的和除x的长度的负值.
for k=2:m %循环,k从2开始,每次步长为1,当k=m时,完成最后一次循环
%以psi的第k行作为多项式系数,计算多项式在x处的值,并赋给t
t=polyval(psi(k,:),x);
以psi的第k-1行作为多项式系数,计算多项式在x处的值,并赋给t
t1=polyval(psi(k-1,:),x);
%a等于 x与t中元素对应相乘,然后乘t的转置,再除以t乘t的转置
a=(x.*t)*t'/(t*t');
%b等于 t乘t的转置除以t1乘t1的转置
b=(t*t')/(t1*t1');
%psi的第k+1行元素为
%以1和-a为系数的多项式乘以以psi的第k行、第2到(m+1)列作为系数的多项式.
%减去b乘psi的第k-1行
psi(k+1,:)=conv([1 -a],psi(k,2:m+1))-b*psi(k-1,:);
end %结束for循环标志
for k=1:m %for循环,k从1开始,步长为1,当k=m时,完成最后一次循环
t=polyval(psi(k+1,:),x); %以psi的第k+1行作为多项式系数,计算多项式在x处的值,并赋给t
p(k+1)=y*t'/(t*t'); %y乘t的转置,除以t乘t的转置
end %结束for循环标志
p=p*psi; %p乘psi,然后赋给p,传递到主程序.
 
 
展开全文阅读
剩余:2000