2012年1月26日 星期四

MATLAB處理最小平方法

之前線代教了最小平方法的算法,用了$A^\mathrm{T}A\mathbf{\hat{x}}=A^\mathrm{T}\textbf{b}$
於是把這個方法丟給MATLAB算,馬上就跑出方程式的係數了
學以致用,很好XD
剛剛不小心找到了更簡單的方法...使用POLYFIT函數
p = polyfit(x,y,n)
##ReadMore##
其中x是所有點的x坐標,y是所有點的y坐標,n是插值多項式次數
輸出值p為一向量(其中的元素為多項式的係數以降冪排列)
其實這個函數本來是要計算多項式插值函數的,不過只要令n=1就是最小平方法了
如果要畫圖的話,再配合POLYVAL函數即可
POLYVAL函數的用法為polyval(p,x),其中p是多項式,x是要代入的數

兩個函數結合在一起就可以畫出最小平方法的圖了
例如:
x = [1 2 3 4 5];
y = [1 2.1 3.1 3.9 4.8];
p = polyfit(x,y,1);
xx = 0:.1:6;
yy = polyval(p,xx);
plot(x,y,'o',xx,yy);

心得:那我之前做結報那麼辛苦的用$A^\mathrm{T}A\mathbf{\hat{x}}=A^\mathrm{T}\textbf{b}$幹嘛OTZ