📄 exm051013_1.m
字号:
%exm051013_1.m
clc
%被拟合的原始数据
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); %用于判断拟合良好度
%适当度的图示
clf,shg
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 线')
%适当的三阶多项式拟合情况图示
nod=input('根据图形选择适当的阶次 (请输入数值) ');
clf,shg,
plot(x,y,'b+');axis([0,1,1,6]);hold on
errorbar(x,YE{nod},D{nod},'r');hold off
title('较适当的三阶拟合')
text(0.1,5.5,['chi2=' num2str(chi2(nod)) '~' int2str(freedom(nod))])
text(0.1,5,['freedom=' int2str(freedom(nod))])
text(0.6,1.7,['Q=' num2str(Q(nod)) '~0.5'])
%拟合多项式的系数和离差
disp(' ')
disp('拟合多项式系数'),disp(A{nod})
disp('拟合系数的离差'),disp(DA{nod})
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -