我试图编写一个循环,通过可能的多项式插值拟合进行排序,然后绘制具有最小误差值s.norm值的插值 . 到目前为止,我有:
for i=1:10
[p,S] = polyfit(x,y,i);
f = polyval(p,x);
subplot(5,2,i)
plot(x,y,'*',x,f,'-')
axis([0 3 -2.5 12])
title(['Order is: ',num2str(i),' norm is: ',num2str(S.normr)])
end
目前这将绘制$ i = {1,2,...,10} $的ith degree多项式的所有可能拟合,并将使用图形打印s.normr值 . 但是,我想更改它,以便循环选择具有最小S.normr值的插值并绘制该插值 . 为此,到目前为止,我有以下内容:
for i=1:10
[p,S] = polyfit(x,y,i);
f = polyval(p,x);
%fbest = polyval(p,x) if S.normr = min(S.normr) for i
%subplot(1,1,i)
%plot(x,y,'*',x,fbest,'-')
axis([0 3 -2.5 12])
title(['Order is: ',num2str(i),' norm is: ',num2str(S.normr)])
end
我已经注释掉了我改变的部分 . 我相信逻辑是正确的,但我不确定如何将其转换为Matlab代码 .
棘手的部分是我不希望循环继续,直到它满足指定的标准 . 相反,我希望它继续通过所有n = 10次迭代,然后选择具有最小S.normr作为其输出的迭代,然后将该选择打印为绘图 .
tl; dr:第一段代码适用于绘制所有可能的插值 . 问题是我想操纵代码,以便不是绘制所有插值,而是选择具有最小S.normr值的插值,然后绘制插值 .