系統辨識的Matlab實現方法(手把手)_第1頁
系統辨識的Matlab實現方法(手把手)_第2頁
系統辨識的Matlab實現方法(手把手)_第3頁
系統辨識的Matlab實現方法(手把手)_第4頁
系統辨識的Matlab實現方法(手把手)_第5頁
已閱讀5頁,還剩12頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、最近在做一個項目的方案設計,應各位老總的要求,只有系統框圖和器件選型可不行,為了凸顯方案設計的高大上,必須上理論分析,炫一下“技術富”,至于具體有多大實際指導意義,那就不得而知了!本人也是網上一頓百度,再加幾日探索,現在對用matlab實現系統辨識有了一些初步的淺薄的經驗,在此略做一小節。必須要指出的是,本文研究對象是經典控制論理最簡單最常用的線性時不變的siso系統,而且是2階的哦,也就是具有如下形式的傳遞函數:本文要做的就是,對于有這樣傳遞函數的一個系統,要辨識得到其中的未知數T, !這可是控制系統設計分析的基礎哦,沒有系統模型,啥理論、算法都是白扯,在實際工程中非常重要哦!經過總結研究,

2、在得到系統階躍響應實驗數據之后(當然如果是其他響應,也有辦法可以辨識,在此還是只討論最簡單的階躍響應實驗曲線,誰讓你我是菜鳥呢),利用matlab至少可以有兩種方法實現實現(目前我只會兩種,呵呵)!一、函數法二、GUI系統辨識工具箱下面分別作詳細介紹!一、 函數法看官別著急,先來做一段分析(請看下面兩排紅*之間部分),這段分析是網上找來的,看看活躍一下腦細胞吧,如果不研讀一下,對于下面matlab程序,恐怕真的就是一頭霧水咯!*G(s)可以分解為:其中, 、都是實數且均大于零。則有:,傳遞函數進一步化為:因此,辨識傳遞函數就轉化為求解、。當輸入為單位階躍函數時,對上式進行拉普拉斯反變換,得系統

3、時域下的單位階躍響應為:即 令=,得 對上式兩邊取以為底的對數得當時,則上式化簡為該式的形式滿足直線方程其中,=,通過最小二乘算法實現直線的擬合,得到,的值,即可得到、的值,進而可得系統的傳遞函數。*Matlab程序代碼:clcclose allt=1 3 5 7 9 11 13 15 17 19; y=0.149086 0.5890067 0.830617 0.933990 0.973980 0.991095 0.995868 0.998680 0.999490 0.999850; y2=log(1-y);plot(t,y2,'*');grid onpm=polyfit(t,

4、y2,1)value=polyval(pm,t);hold onplot(t,value,'r')title('fontname黑體fontsize20y(t)=at+b')w2=-pm(1)w1=w2/(1-exp(-pm(2)T=1/sqrt(w1*w2)theta=(w1+w2)/(2*sqrt(w1*w2)z=;p=-w1 -w2;k=w1*w2;sys=zpk(z,p,k)figure(2)step(sys,0:0.5:20);axis(0 20 0 1.2)hold on plot(t,y,'r*')打開matlab,新建一個Func

5、tion,把上述程序段拷進去,保存,運行,運行結果:系統的傳遞函數為很順利吧?先高興一個!問題接著馬上就來了,上面這個例子,這個傳遞函數的極點剛好都是負實數,因此辨識得很順利,但是如果系統是欠阻尼系統,也就是如果傳遞函數的根是復數,那么上述函數段,就無能為力咯,會出現說“matlab無法處理增益為復數情況之類······”例如對于這個系統,若果用simulink做一下階躍響應,再把實驗數據代入上述函數段,那就不行咯!怎么辦呢,只能另辟蹊徑了!二、(System Identification Tool)系統辨識工具箱早聽說matlab博

6、大精深,神通廣大了,于是乎我確定肯定有更簡單、直觀、強大的工具來完成這小兒科把戲。查資料琢磨之后,我做了個小實驗,在simulink里驗證了該種方法。該方法的大原則是:在確定了系統的輸入輸出數據(兩個列向量N×1形式,如果是1×N,會提示出錯!)之后,設計好一定的辨識原則(比如說是2階?3階?,傳遞函數是零極點形式,還是帶阻尼形式,等等),然后就交給強大的matlab,得到辨識結果。Step by step,plz!Step1、 建立模型獲取系統輸入輸出數據圖1圖1系統的輸入是階躍信號,用Scope1監視,并輸出到workspace(這步不會的自己百度哦),采樣周期是0.1

7、s,得到輸入變量u(101×1的矩陣);本人在系統的階躍響應上疊加了一白噪聲,當然也可以不加噪聲,加了噪聲就是期望更真實的模擬實際情況,白噪聲參數設置見圖2圖2同樣在Scope2監視,也將結果輸出到workspace,得到響應數據y(同樣也是101×1的矩陣)Step 2、進入辨識工具箱&設置辨識規則直接在command window 輸入 ident,回車,進入辨識工具箱圖3圖3點擊import下拉菜單,選時域數據time domain data,見圖4圖4在下圖5紅色圈區域輸入之前得到的系統輸入和輸出數據,u和y圖5 在下圖6綠色圈內輸入數據的一些信息,因為之前

8、模型中,階躍起點我是放在0s處的,這里也設置0,如果前面模型仿真是1s,這里應該也是1s;采樣時間是0.1s,根據實際情況設置統一哦圖6設置完之后,點擊import此時界面變成圖7圖7如果在下圖8勾選紅框這個選項,就會出現我們剛才設定輸入輸出數據的曲線,如圖9所示,其他勾選項是頻域的分析和顯示,暫不用它。圖8圖9看看與我們實際設置的輸入輸出是否符合,如果符合,那么我們離成功就不遠咯,如果發現異常,那再好好檢查一遍,直到確保數據導入沒有問題!下面兩段紅色斜杠之間的內容,對于本實驗,可以直接跳過,看一下對后續復雜模型的處理有好處哦,也算全面熟悉一下工具。/到這接著選preprocess也就是對數據

9、進行預處理了,下拉菜單中有很多種處理方法和手段,有這個心思的人可以挨個試一下功能。圖10圖10預處理的對象是working data中的數據,每進行一種預處理在左邊就會有新的數據生成,這時只要將新的數據移動到working data的那個方框,就可以將working data換成你所想處理的數據了,可以這樣多次進行處理,得到你最終想用來辨識的數據和用于驗證的數據(不需要的數據可以拖到那個trash里面刪除,就是回收站了,也可以從回收站中找回的)接下來就是辨識了,首先把辨識用的數據拖到working data那個方框,再把驗證的數據拖到validation data那個方框,這個validati

10、on data就是最原始數據稍作處理得到的一個更接近理論模型的對象數據,在這實驗里,本人用的就是默認數據,也就是不做任何preprocess處理。/點下拉菜單estimate,選你想要的模型,在彈出的對話框中設定參數,圖11圖11這里邊的模型種類比較多,有線性的、非線性的、狀態空間的、經典傳遞函數形式的等等,我們所選的就是圖中紅色方框process models,單擊。彈出如下界面圖12!是否有零點、有延遲、有積分?根據勾選,傳函自動調整極點個數及其他傳遞函數圖12在本實驗中,我們做如下設置,見圖13紅框標出部分。圖13然后點擊最下方Estimate,就有模型生成了。圖14圖14先勾選上圖綠色框選項,看到了什么?給出了擬合率,best fits 98.72有木有?傳遞函數具體的數值,雙擊上圖紅色框,見圖15?圖15在右邊的數據欄中;也就是model views中了,下面有很多可以選擇,每選一個就可以生成一幅對應的圖,是由用于驗證的數據生成的。把模型拖到to worksp

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論