天天看點

matlab仿真計算精度提高,[轉載]改善simulink仿真的性能和精确度

一、加速仿真

1。模型包括一個MATLab Fcn子產品。當執行一個包含MATLab

Fcn子產品的模型,Simulink在每一個仿真時間步都要調用MATLab

解釋器。是以應盡可能地使用Simulink的内置Fcn子產品或者是最基本的math子產品。

2。模型包含M檔案的S函數,M檔案的S函數同樣會使Simulink在每一個仿真時間步調用MATLAB解釋器,替代方法是把M檔案的S函數轉化為C-mex函數或者建立一個等價的子系統。

3.模型包含一個存儲子產品。使用存儲子產品将使階數可變的求解器在每個仿真時間步被重置回1階

4.仿真時間步太小。解決的方法是把最大仿真步長參數設定回simulink的預設值-auto

5.。仿真的精度要求過高。一般來說,相對誤差容限為0.1%就已經夠了,當模型存在取值趨向于零的狀态,仿真時如果絕對誤差限度太小,會使仿真在接近零的狀态附近耗費多過的仿真步。

6 仿真時間過長,應按仿真情況減小仿真的時間間隔

7

所解決的問題是stiff問題,卻選擇了非stiff的求解器。解決方法是ode15s。

8

模型所設定的采樣時間的公約數過小,這樣使Simulink可以采用的基準采樣時間過小,因為Simulink會選擇足夠小的時間步以保證所設定的采樣點都能取到。

9。模型包含一個代數環。代數環的求解方法就是在每一個時間步疊代地進行計算,這樣會嚴重地降低仿真的性能。

10 模型吧一個random number

子產品作為integrator子產品的輸入。對于連續系統,可以使用source子庫裡的Band-Limited

WhiteNoise子產品。

二、仿真精度:檢驗仿真精度的方法是修改仿真的相對誤差及絕對誤差容限。在一個時間跨度反複仿真,如果結果不變或者變化不大,表示該解是收斂的。

如果仿真在開始錯過模型的關鍵行為,那麼改變初識步長,使仿真不會忽略這些關鍵行為;

如果結果不穩定,可能有以下幾個原因:

1 所要仿真的系統本身不穩定。

2.如果正在使用ode15s,使用者可以把階數定為2或者嘗試ode23s。

3.如果仿真的結果看起來不是很精确,可能有兩個原因造成:

模型有取值接近零的狀态,如果模型的絕對誤差容限過大,會使仿真在接近零的區域包含的仿真時間步太少,解決的方法是修改絕對誤差容限參數或者在積分子產品的對話框修改初始的狀态。

如果改變絕對誤差容限不能達到預期的效果,可以修改相對誤差容限,使可接受的誤差降低,并減小仿真步長。