matlab拟合模型学习总结
與插值問題不同,在擬合問題中不需要曲線一定經過給定的點。擬合問題的目標是尋求一個函數(曲線),使得該曲線在某種準則下與所有的數據點最為接近,即曲線擬合的最好(最小化損失函數)。
我們首先使用最小二乘法來計算并擬合
上圖為最最小二乘法基本公式,在此不進行深入解釋。
利用已知數據,計算k,bhat,來對所給數據進行擬合。
下面我們在matlab中實際操作一下
plot(x,y,'o')%做出散點圖,先最已知數據進行觀察
xlabel('x的值')
ylabel('y的值')%給x,y軸加標簽。
n=size(x,1);%測量x長度
k=(n*sum(x.*y)-sum(x)*sum(y))/(n*sum(x.*x)-sum(x)*sum(x))
b=(sum(x.*x)*sum(y)-sum(x)*sum(x.*y))/(n*sum(x.*x)-sum(x)*sum(x))%分別算出k和b的值,根據最小二乘法
hold on %在之前的散點圖上繼續畫圖形
grid on %在生成的圖形上顯示網格線,更容易看出大小比較和區分
f=@(x) k*x+b;
%匿名函數的基本用法
%函數名稱=@(arglist函數變量)anonymous function
%anonymous function匿名函數的表達式
fplot(f,[2.5,7]);
legend('樣本數據','擬合函數')
%計算擬合優度
y_hat=k*x+b;
SSR=sum((y_hat-mean(y)).^2)%回歸平方和
SSE=sum((y_hat-y).^2)%誤差平方和
SST=sum((y-mean(y)).^2)%誤差總體平方和
SST-SSE-SSR%5.6843e-14誤差很小
R_2=SSR/SST
?
擬合完畢之后,我們對其進行擬合優度測定,以確定擬合的好壞
擬合優度只有對線性函數才有實際作用,線性可以對參數的線性
?結合上部分代碼,可以計算出擬合優度。
%計算擬合優度
y_hat=k*x+b;
SSR=sum((y_hat-mean(y)).^2)%回歸平方和
SSE=sum((y_hat-y).^2)%誤差平方和
SST=sum((y-mean(y)).^2)%誤差總體平方和
SST-SSE-SSR%5.6843e-14誤差很小
R_2=SSR/SST
在matlab中還有擬合工具箱的用法,在我們擬合時更為便捷。
其中一般選用多項式,和自定義擬合方法
?
點擊文件還可以創造獲取代碼,可以放在論文附錄中,進行翻譯。
在命令行窗口中可以直接運行該生成函數?
?在使用自定義函數擬合時候,可能會遇到沒有收斂解的情況此時
?
總結
以上是生活随笔為你收集整理的matlab拟合模型学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 八大排序算法的python实现(三)冒泡
- 下一篇: matlab人脸追踪,求大神帮助我这个菜