Matlab擬合曲線的方式
Matlab擬合曲線的方式有很多種,有三次樣條插值、線性插值、多項式擬合等等。多項式擬合,若采用最小二乘法擬合,對于參是一個線性方程組,可以用Matlab求逆矩陣的方法,得到方程的最小二乘解。但如果參數構成的方程組并不是線性方程組,則不可以用矩陣的方法求得。使用樣條插值和線性插值固然可以,但是得不到需要的表達式,此時使用非線性擬合方法解決最為合適。
通常,我們在實驗前對模型都有一個假設,例如這是一個指數衰減的曲線,或者指數衰減振蕩的曲線,或者是一個周期振蕩的由若干個頻率的三角函數疊加組成的信號。此時我們只需要指定需要估計的參數,代入數據求解即可。以下就是一個點典型的例子。
clc
close all
plot(xdata,ydata);xlim([0,1]);hold on;%實際曲線繪圖
fun=@(x,xdata)(x(1)*(1-exp(-xdata/x(2))));%估計函數
x0=[1500,0.025];%初始估計值[x(1),x(2)]
x=lsqcurvefit(fun,x0,xdata,ydata);%非線性函數擬合
y=fun(x,xdata);%代入估計的值,并獲得函數點
plot(xdata,y);xlim([0,1]);%繪制估計曲線
title(['[K,Tp]=',num2str(x)]);%標注估計的參數
|