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