Matlab 多项式拟合问题
在张志涌《精通matlab6.5版》P151里有如下内容
5.10.1.3 多项式拟合的MATLAB实现
【*例5.10.1.3-1】实施函数拟合的较完整描述示例。
在进行函数拟合时,有几个问题要回答:(1)采用什么函数模型?(2)模型的结构参数是什么?(3)参数的估计值如何计算?(4)估计参数的离差?
本例采用多项式模型,模型阶数(结构参数)通过 量确定,多项式系数运用最小二乘估计,并给出相应的离差。具体如下。
%被拟合的原始数据
x=0:0.1:1;y=[2.1,2.3,2.5,2.9,3.2,3.3,3.8,4.1,4.9,5.4,5.8];
dy=0.15; %原数据y的标准差
for n=1:6 %依次用1到6阶多项式去拟合
[a,S]=polyfit(x,y,n); %计算拟合多项式系数
A{n}=a; %用元胞数组记录不同阶次多项式的系数
da=dy*sqrt(diag(inv(S.R'*S.R))); %计算各系数的误差
DA{n}=da'; %用元胞数组记录不同阶次多项式系数的误差
freedom(n)=S.df; %记录自由度
[ye,delta]=polyval(a,x,S); %计算拟合多项式值的范围
YE{n}=ye; %用元胞数组记录不同阶次拟合多项式的均值
D{n}=delta; %用元胞数组记录不同阶次拟合多项式的离差
chi2(n)=sum((y-ye).^2)/dy/dy; %计算不同阶次的 量。
end
Q=1-chi2cdf(chi2,freedom); %用于判断拟合良好度
%适当度的图示
subplot(1,2,1),plot(1:6,abs(chi2-freedom),'b')
xlabel('阶次'),title('chi 2与自由度')
subplot(1,2,2),plot(1:6,Q,'r',1:6,ones(1,6)*0.5)
xlabel('阶次'),title('Q 与0.5 线')
dy=0.15; 是如何得出的?或者是什么含义啊!这个在程序中好像很重要啊!
追问:可是,我有一组x和y,要拟合曲线,确定最佳阶数的话,怎么定dy呢?呵呵,厉害,有点茅塞顿开啊!
想请教,如果我要确定最佳阶数,还有什么其他方法吗?谢谢你啊