当前位置:编程学习 > Matlab >>

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呢?呵呵,厉害,有点茅塞顿开啊!
想请教,如果我要确定最佳阶数,还有什么其他方法吗?谢谢你啊
答案:dy应该是已知条件,原数据y的标准差,即y中的每一个点的测量误差,用它来估算拟合系数的误差
其他:真不好意思 我没法帮你 我也是自学matlab的 它的功能很强大 我只是需要用它来解决时滞微分方程的解的轨迹图 

上一个:我现在手上我经纬度和一个高程,想通过已知的预测未知经纬度的高程,请求高手编写在matlab中的代码
下一个:matlab 数值解法 提示出is not a valid expression or equation.

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,