現在,我有一個使用sim('y')命令運行y.mdl模型的x.m文件。 y.mdl的求解參數無法更改,模型中的所有元素都是必需的。沒有診斷警告。一切正常運行 模型的輸出是一個值(沒有參數隨時間變化,沒有範圍......)。只是雙重價值。我甚至不需要打開模型。 問題:有什麼方法可以提高x.m的性能嗎?改善從m文件運行Simulink模型
由於提前,
約翰
現在,我有一個使用sim('y')命令運行y.mdl模型的x.m文件。 y.mdl的求解參數無法更改,模型中的所有元素都是必需的。沒有診斷警告。一切正常運行 模型的輸出是一個值(沒有參數隨時間變化,沒有範圍......)。只是雙重價值。我甚至不需要打開模型。 問題:有什麼方法可以提高x.m的性能嗎?改善從m文件運行Simulink模型
由於提前,
約翰
如果所需要的所有是執行通過sim
命令的模式,我要說的是,這將是一個候選人產生S-功能。如果您有Real Time Workshop工具箱,則可以右鍵單擊頂級子系統,選擇Real-Time Workshop
,然後選擇Generate S-Function
。這將生成一個S函數模型,您可以將其保存爲庫並用於您的y.mdl
文件以替代您的頂層模塊。該方法將生成並編譯將比原始模型執行速度快得多的C代碼。
如果您需要初始化某些參數,則可以使用Simulink掩碼和Simulink.Parameter
。首先,創建您想要模擬的子系統。然後通過右鍵單擊子系統屏蔽子系統並點擊,Mask Subsystem
。您想要修改的任何參數都需要映射到掩碼。因此,如果您的模型中有3個變量,則爲a
,b
和c
。在模板編輯擊中參數選項卡並輸入類似於下面的數據:
然後在工作區中,您輸入變量Simulink.Parameter
S:
a_var = Simulink.Parameter;
a_var.Value = 42;
b_var = Simulink.Parameter;
b_var.Value = 4;
c_var = Simulink.Parameter;
c_var.Value = 2;
當然,任何價值,你然後將這些變量名稱輸入到子系統掩碼中:
然後當你右擊變成一個S-功能,您將獲得:
檢查他們全部是可調的。然後,當你運行你的腳本,你開始模擬之前初始化的變量在工作區中,像這樣:
evalin('base','a_var.Value = 22')
這不是我最喜歡的方法,但它的作品。希望這會讓你走到你需要去的地方。
首先謝謝。 幾乎得到它。 y.mdl需要x.m.所計算的47個輸入參數。這些參數在工作區中。每次運行x.m時,這些參數都會有所不同。 「我需要做的就是從工作區加載y.exe輸入參數。」任何線索? 謝謝 – 2012-03-05 16:26:52
作品。 井字結果: 無S函數= 1.1596秒。 S函數= 0.3666秒。 非常感謝。 – 2012-03-06 08:18:41