matlab传递函数参数辨识,基于matlab/Simulink的参数辨识
基于Simulink的辨識 Simulink自帶Parameter Estimation功能。可以對Simulink模型中的參數進行估計。MATLAB的Parameter Estimation官方說明中有一個電池參辨識的例子(見[Simulink參數辨識官方示例])。使用Simulink進行辨識的步驟為: 1. 建立Simulink模型,將需要辨識的參數用base workspace中的變量表示。 2. 打開菜單欄中Analysis選項下的Parameter Estimation功能。 3. 打開Transient Data, 導入使用實驗或其他方法得到的輸入、輸出數據(由于用不到狀態數據所以不用設置States)。在這里,輸入數據為電池的電流,輸出數據為電池的端電壓。由于電池參數隨SOC而變化,輸入數據只能為脈沖放電的那一段數據,認為這段時間內電池的SOC沒有太大變化。當然也可以將模型建立為與SOC有關的,但這樣就過于復雜了。 4. 打開Variables,設置需要辨識的參數。在這里可以設置參數的初始值、范圍等。由于使用的算法一般只能找到一個局部最優解,并不能保證為全局最優解,所以初始值的設置還是比較重要的。對于鋰電池來說,電阻一般為mΩ量級,時間常數為10s~1000s。 5. 打開Estimation,進行參數估計的相關設置。勾選要用的Data Set和Parameters。使用Estimation Options進行估計算法的設置。MATLAB提供了幾種優化算法,一般選非線性最小方差。比較重要的兩個參數是參數截止誤差(Parameter tolerance)和函數截止誤差(Function tolerance)。只要滿足了兩次迭代的參數或cost function的不超過截止誤差,迭代就會停止。在Parallel Options中可以選擇啟用parallel pool來進行多線程加速,但是有時候會失敗。 6. 點擊Start就可以開始了,勾選Show progress views可以看到仿真輸出和參數的變化。 7. 按照同樣的方法進行其他SOC下的參數辨識。也可以在Simulink中建立一個模塊,對輸入進行篩選,對不同的SOC使用不同的參數。可以一次性辨識出參數-SOC的關系。 這種方法的優點是簡單易用。幾乎全部為圖形化操作,不需要寫代碼,只需要搭建好Simulink模型就可以進行估計了,而且幾乎可以估計任何線性、非線性的模型。缺點是速度慢、效率低。每次迭代都需要編譯并運行仿真程序很多次,這個過程程序十分卡頓。
總結
以上是生活随笔為你收集整理的matlab传递函数参数辨识,基于matlab/Simulink的参数辨识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php接收rs485的数据如何处理,为什
- 下一篇: matlab中ode45如何设置,mat