2012-03-05 309 views
2

現在,我有一個使用sim('y')命令運行y.mdl模型的x.m文件。 y.mdl的求解參數無法更改,模型中的所有元素都是必需的。沒有診斷警告。一切正常運行 模型的輸出是一個值(沒有參數隨時間變化,沒有範圍......)。只是雙重價值。我甚至不需要打開模型。 問題:有什麼方法可以提高x.m的性能嗎?改善從m文件運行Simulink模型

由於提前,

約翰

回答

1

如果所需要的所有是執行通過sim命令的模式,我要說的是,這將是一個候選人產生S-功能。如果您有Real Time Workshop工具箱,則可以右鍵單擊頂級子系統,選擇Real-Time Workshop,然後選擇Generate S-Function。這將生成一個S函數模型,您可以將其保存爲庫並用於您的y.mdl文件以替代您的頂層模塊。該方法將生成並編譯將比原始模型執行速度快得多的C代碼。

如果您需要初始化某些參數,則可以使用Simulink掩碼和Simulink.Parameter。首先,創建您想要模擬的子系統。然後通過右鍵單擊子系統屏蔽子系統並點擊,Mask Subsystem。您想要修改的任何參數都需要映射到掩碼。因此,如果您的模型中有3個變量,則爲a,bc。在模板編輯擊中參數選項卡並輸入類似於下面的數據:

Mask Editor

然後在工作區中,您輸入變量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; 

當然,任何價值,你然後將這些變量名稱輸入到子系統掩碼中:

Enter Mask Data

然後當你右擊變成一個S-功能,您將獲得:

RTW Screen

檢查他們全部是可調的。然後,當你運行你的腳本,你開始模擬之前初始化的變量在工作區中,像這樣:

evalin('base','a_var.Value = 22') 

這不是我最喜歡的方法,但它的作品。希望這會讓你走到你需要去的地方。

+0

首先謝謝。 幾乎得到它。 y.mdl需要x.m.所計算的47個輸入參數。這些參數在工作區中。每次運行x.m時,這些參數都會有所不同。 「我需要做的就是從工作區加載y.exe輸入參數。」任何線索? 謝謝 – 2012-03-05 16:26:52

+0

作品。 井字結果: 無S函數= 1.1596秒。 S函數= 0.3666秒。 非常感謝。 – 2012-03-06 08:18:41

相關問題