日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Matlab对指定参数的曲线进行非线性拟合

發布時間:2025/3/11 编程问答 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Matlab对指定参数的曲线进行非线性拟合 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Matlab擬合曲線的方式

Matlab擬合曲線的方式有很多種,有三次樣條插值、線性插值、多項式擬合等等。多項式擬合由于函數由f(x)=anxn+an?1xn?1+...+a1x+a0f(x)=a_nx^n+a_{n-1}x^{n-1}+...+a_1x+a_0f(x)=an?xn+an?1?xn?1+...+a1?x+a0?組成,若采用最小二乘法擬合,對于參數an,an?1,...,a1,a0a_n,a_{n-1},...,a_1,a_0an?,an?1?,...,a1?,a0?來說,方程組fn(x)=0f_n(x)=0fn?(x)=0是一個線性方程組,可以用Matlab求逆矩陣的方法,得到方程的最小二乘解。但如果參數構成的方程組并不是線性方程組,則不可以用矩陣的方法求得。使用樣條插值和線性插值固然可以,但是得不到需要的表達式,此時使用非線性擬合方法解決最為合適。
通常,我們在實驗前對模型都有一個假設,例如這是一個指數衰減的曲線,或者指數衰減振蕩的曲線,或者是一個周期振蕩的由若干個頻率的三角函數疊加組成的信號。此時我們只需要指定需要估計的參數,代入數據求解即可。以下就是一個點典型的例子。

步驟解讀

這個例子的數據是一個對一個慣性系統給定一個階躍輸入,對系統的輸出進行采集,并辨別這個系統。
(xdata,ydata)是一個一階系統階躍響應的采集數據,ydata是輸出值,xdata是時間戳。由于系統是階躍響應,我們假定系統的傳遞函數是KTps+1\frac{K}{T_ps+1}Tp?s+1K?,顯然需要辨別的兩個參數是K和TpT_pTp?
該系統在階躍響應輸入下的始于表達式為c(t)=K(1?etTP)c(t)=K(1-\rm e^\frac{t}{T_P})c(t)=K(1?eTP?t?),因此需要建立的函數fun如下

fun=@(xdata,ydata)(x(1)*(1-exp(-xdata/x(2))))

是一個指定參數的函數,我們需要求解的參數就是x(1)和x(2),其中x返回值是一個二元參數向量,可直接調用fun函數求得y根據時間戳生成的辨識系統的計算值。并與實驗值ydata畫在一張圖進行比較。

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)]);%標注估計的參數

繪制的預估曲線如下:(藍色的是實驗數據,紅色的是擬合曲線)

可以發現,如果沿著實驗曲線的大致趨勢,擬合的指數逼近曲線如紅色線所示,可見辨識的參數較為準確。

總結

以上是生活随笔為你收集整理的Matlab对指定参数的曲线进行非线性拟合的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。