我們正在嘗試將一個仿真模型作爲一個塊集成到Simulink中。我們有它加載一個包含函數導一個m文件,自定義連續的塊輸出等獲取求解器類型和步長(對於固定步長解算器)
我的問題是:有沒有辦法找出哪些求解器目前正在與該參數一起使用?我們的模型將無法支持可變時間求解器,我想提出警告。同樣,該模型需要固定的步長時間進行初始化。
在此先感謝。
我們正在嘗試將一個仿真模型作爲一個塊集成到Simulink中。我們有它加載一個包含函數導一個m文件,自定義連續的塊輸出等獲取求解器類型和步長(對於固定步長解算器)
我的問題是:有沒有辦法找出哪些求解器目前正在與該參數一起使用?我們的模型將無法支持可變時間求解器,我想提出警告。同樣,該模型需要固定的步長時間進行初始化。
在此先感謝。
你可以使用
get_param('modelName', 'SolverName');
一些其他常見的求解器參數都
AbsTol
FixedStep
InitialStep
ZcThreshold
ExtrapolationOrder
MaxStep
MinStep
RelTol
SolverMode
你可以找到其他的參數,你可能希望通過打開.mdl文件查詢當前的求解器名稱文件在你最喜歡的文本編輯器中,並通過它進行挖掘。
如果我正確理解你的使用情況,您要確定解算器(和其他求解PARAMS)的包含您的塊頂級SIMULINK系統類型。
我認爲有以下應該給你你想要的東西:
get_param(bdroot, 'SolverType'); % //Returns 'Variable-step' or 'Fixed-step'
get_param(bdroot, 'FixedStep'); % //Returns the fixed step size
注意,對於一般性/重用的目的,這裏採用bdroot識別頂層系統(而不是明確指定的這個名字系統)。
如果您想了解更多有關的其他模型參數,你可以得到/套,我想看看這個doc。
另外,我想知道爲什麼它是你的模型不支持可變步長求解?
對於時間步長:你可以把一個變量(例如'Ts')在配置時間步長,你只需要在初始化過程中進行設置(例如,在init回調),並可以再次在其它塊以後使用它。 – 2012-08-08 16:05:51