MATLAB通過優化擬合曲線

2021-02-19 數模樂園

點擊箭頭處「藍色字」,關注我們哦!!

此示例說明如何使用非線性函數對數據進行擬合。在本示例中,非線性函數是標準指數衰減曲線

其中,y(t) 是時間 t 時的響應,A 和 λ 是要擬合的參數。對曲線進行擬合是指找出能夠使誤差平方和最小化的參數 A 和 λ

其中,時間為 ti,響應為 yi,i=1,…,n。誤差平方和為目標函數。


通常,您要通過測量獲得數據。在此示例中,請基於 A=40 和 λ=0.5 且帶正態分布偽隨機誤差的模型創建人工數據。

rng default % for reproducibility
tdata=0:0.1:10;
ydata=40*exp(-0.5*tdata)+randn(size(tdata));


編寫一個函數,該函數可接受參數 A 和 lambda 以及數據 tdata 和 ydata,並返回模型 y(t) 的誤差平方和。將要優化的所有變量(A 和 lambda)置入單個向量變量 (x)。

type sseval

function sse = sseval(x,tdata,ydata)
A = x(1);
lambda = x(2);
sse = sum((ydata - A*exp(-lambda*tdata)).^2);

將此目標函數保存為 MATLAB® 路徑上名為 sseval.m 的文件。

fminsearch 求解器適用於一個變量 x 的函數。但 sseval 函數包含三個變量。額外變量 tdata 和 ydata 不是要優化的變量,而是用於優化的數據。將 fminsearch 的目標函數定義為僅含有一個變量 x 的函數:

fun = @(x)sseval(x,tdata,ydata);


從隨機正參數集 x0 開始,使用 fminsearch 求使得目標函數值最小的參數。

x0 = rand(2,1);
bestx = fminsearch(fun,x0)

bestx = 2×1
  40.6877
   0.4984

結果 bestx 與生成數據的參數 A = 40 和 lambda = 0.5 相當接近。

檢查擬合質量

要檢查擬合質量,請繪製數據和生成的擬合響應曲線。根據返回的模型參數創建響應曲線。

A = bestx(1);
lambda = bestx(2);
yfit = A*exp(-lambda*tdata);
plot(tdata,ydata,'*');
hold onplot(tdata,yfit,'r');
xlabel('tdata')
ylabel('Response Data and Curve')
title('Data and Best Fitting Exponential Curve')
legend('Data','Fitted Curve')
hold off

相關焦點

  • Matlab優化擬合曲線
    非線性函數假定是標準指數衰減曲線,y(t)=Aexp(−λt)其中,y(t) 是時間 t 時的響應,A 和 λ 是要擬合的參數。對曲線進行擬合是指找出能夠使誤差平方和最小化的參數 A 和 λ,誤差平方和為目標函數創建樣本數據本文基於 A=40 和 λ=0.5 且帶正態分布偽隨機誤差的模型創建人工數據。
  • MATLAB萬能實用的非線性曲線擬合方法
    在科學計算和工程應用中,經常會遇到需要擬合一系列的離散數據,最近找了很多相關的文章方法,在這裡進行總結一下其中最完整、幾乎能解決所有離散參數非線性擬合的方法根據你的實際問題得到一系列的散點例如:根據上述的實際散點確定應該使用什麼樣的曲線,或者說是想要模擬的曲線
  • MATLAB曲線擬合及Fourier分析
    在這種情況下,如果強求構造的函數(曲線)通過各插值節點,顯然是不合理的。為此,人們設想構造一個函數(曲線)y=g(x)去擬合f(x),但它不必通過各插值節點,而只是使該曲線從這些插值節點中穿過,且使它在某種意義下最優。MATLAB的曲線擬合是用常見的最小二乘原理,所構造的g(x)是一個次數小於擬合節點個數的多項式。
  • 強大的matlab數據科學擬合庫cftool——直接導入數據進行擬合
    對於使用過matlab做數據處理的人來說,擬合是將平面上一系列的點,用一條光滑的曲線連接起來。因為這條曲線有無數種可能,從而有各種擬合方法。擬合的曲線一般可以用函數表示,根據這個函數的不同有不同的擬合名字。
  • 如何使用Matlab編程進行參數擬合
    x=[ones(10,1) (1:10)']y=x*[10;1]+normrnd(0,0.1,10,1)[b,bint, r,rint,stats]=regress(y,x,0.05)rcoplot(r,rint)4.2簡單線性模型-多項式擬合多項式曲線擬合函數:polyfit( )
  • Matlab擬合詳解
    更為強大的fit函數一維多項式擬合(曲線) p=0 最小二乘直線擬合p=1 三次樣條插值                 函數的類型                 串演算函數                 實時編輯器 Live Editor介紹第五節                 函數變量                 錯誤和異常的處理                 matlab
  • 【科研心得】基於MATLAB的曲線擬合
    所謂的曲線擬合,就是使用某一個模型(比如一元線性模型、指數模型以及Logistic模型等),將一系列的數據擬合成平滑的曲線,以便觀察兩組數據之間的內在聯繫,了解數據之間的變化趨勢。曲線擬合在科學研究、數學建模、實驗分析以及程序開發上都有很大的用處。這裡談到的曲線擬合,可根據自己的需要,選擇不同的模型,可得出不同的效果。
  • Matlab曲線擬合和插值
    MATLAB軟體提供了基本的曲線擬合函數的命令.
  • MATLAB繪製帶置信區間的擬合曲線
    曲線擬合是已知離散點上的數據集,構造一個解析函數(其圖形為一曲線),使在原離散點上儘可能接近給定的值。
  • 【基礎教程】Matlab 曲線擬合之polyfit與polyval函數
    xx=linspace(min(x),max(x)); % 繪圖用到的點的橫坐標yy=polyval(p1,xx); % 擬合曲線的縱坐標plot(x,y,'-or',x1,y1,'-ob',xx,yy); % 繪圖,原始數據+擬合曲線hold on;grid on;b0 = [y(1),-1];%設置初始值;Xi=linspace(min(x),max(x)); % 繪圖用到的點的橫坐標b
  • 應用matlab進行多項式擬合
    採用matlab軟體中的polyfit()函數進行多項式擬合,分別採用5階多項式和9階多項式進行擬合,並對擬合結果進行繪圖對比。clc;clear all;x=[0.2 0.3 0.5 0.6 0.8 0.9 1.2 1.3 1.5 1.8];y=[1 2 3 5 6 7 6 5 4 1 ]; p5=polyfit(x,y,5); %5階多項式擬合
  • 線性擬合與曲線擬合,直接在圖上添加擬合曲線、擬合方程、判別係數...
    2、什麼是曲線擬合?真實世界研究中,變量間不一定是線性關係,比如疾病療效與療程長短的關係、服藥後血藥濃度與時間的關係等常呈曲線關係。此時,線性擬合效果不佳,曲線擬合提供了一個很好的解決思路。曲線擬合(Curve Fitting)是指選擇適當的曲線類型來擬合觀測數據,並用擬合的曲線方程分析兩個變量之間的關係。也可以說曲線擬合就是使用某個模型(或者稱為方程),將一系列的數據擬合出平滑的曲線,以便觀察兩組數據之間的內在聯繫,了解數據之間的變化趨勢。通過對數據進行曲線擬合,我們不但能找到數據中潛在的某種規律,還能對數據的變化進行預測。
  • 數學建模筆記——插值擬合模型(二)
    那什麼是擬合呢?擬合類似於插值,都是函數逼近的一種手段。區別在於,插值函數必須經過所有已知點,而擬合得到的函數,只需要滿足在某種意義下,已知點與該函數曲線的「誤差」最小。換句話說,擬合就是在平面上找到一條連續的曲線,使得所有已知點到這條曲線的總距離最小。這樣我們就有理由使用這條曲線來近似原函數曲線了。
  • 數據擬合原理及MATLAB實現
    數據插值的特點是數據插值函數會嚴格過所有插值節點,而數據擬合只要求擬合函數合理地反映曲線趨勢,不要求必須過所有數據點。數據插值的用途是內部預測,即待預測點自變量在插值節點的自變量取值範圍之內。數據擬合則可以完成外部預測,比如已知前n天的數據,用來預測第n+1天的數據。
  • Matlab 入門教程 | 014 曲線擬合:如何預測2030年中國總人口?
    通過數學模型能夠對天文、地理、物理、化學、社會、經濟等各領域的問題進行分析、預測。數學模型有難易之分,但建模的過程是相似的。今天我們以一個簡單的例子來說明如何使用Matlab進行曲線擬合和對數據進行分析預測。
  • 如何利用Origin進行曲線擬合?
    Origin 提供了強大的線性回歸和函數擬合功能,其中最有代表性的是線性回歸和非線性最小平方擬合。曲線擬合(curve fitting)是指選擇適當的曲線類型來擬合數據,並用擬合的曲線方程分析兩個變量之間的關係。通過對數據進行曲線擬合,我們不但能找到它的變化規律,還能對數據的變化進行一定程度的預測。
  • matlab插值擬合(二)
    1 基於最小二乘法的多項式擬合函數:polyfitp = polyfit(x,y,n),待擬合的多項式為p(1)*x^n + p(2)*x^(n-1) +…+ p(n)*x + p(n+1),其中x是擬合數據的自變量,y是因變量,n是擬合多項式的階數,如當n為1時,即為一次線性擬合。
  • 【Matlab】繪圖
    畢竟figure窗口是一次性品,關閉重新運行程序再打開後又是原樣了,需要重新修改(其實可以通過File-Generate Code來把圖像轉化為代碼,但個人感覺沒必要)另外記得選擇保存的文件格式,不然matlab默認保存的是matlab自己的.fig格式
  • Matlab基礎知識概述
    2002 年初夏所推6.5 版的最大特點是:該版本採用了JIT 加速器,從而使MATLAB 朝運算速度與C 程序相比肩的方向前進了一大步。從2006開始,MathWorks 公司宣布每年更新兩次版本,在已經有了matlab2006a, matlab2006b, matlab2007a, matlab2007b~matlab2012a等等。
  • 利用最小二乘法實現曲線擬合
    簡介在工程問題的計算中,我們經常需要處理一些離散數據的擬合問題,而最小二乘法是處理曲線擬合問題的常用方法。目前,許多軟體都提供有基於最小二乘法進行曲線擬合的功能,例如在Origin和Excel中均可直接利用離散數據進行曲線擬合。然而,這些軟體只能處理一些簡單函數的擬合問題,當需要擬合的函數較為複雜時,或者無法用簡單的表達式來表述時,則往往無法直接進行擬合。