通常你可以使用簡單的操作,避免使用MATLAB Function Block
。在你的情況下有不同的解決方案。例如這種方式:
我從工作區加載ii
變量,檢查Switch
塊中的條件,並且具有相同名稱ii
返回新變量的工作區。
但是!這裏的重要時刻是:通過From Workspace
將數據加載到Simulink中,塊加載的數據必須採用特殊格式:時間序列,矩陣或結構。所以你不能只加載ii=1
。和To Workspace
塊一樣 - 它將數據返回到時間序列,數組或結構中的工作空間。這意味着你的模擬的每個時間步的值都是ii
。
您可以使用Decimation
參數在To Workspace
塊中解決此問題,則只能得到最後一個值爲ii
。要得到沒有時間欄的ii
的值只能使用Save format: Array
的To Workspace
塊選項。這可以讓你得到1個值,只要你願意。但是,現在您只能一次模擬您的程序:使用時間欄(因爲它需要From Workspace
塊)加載ii
並且只保存一個值。 Simulink目前無法加載ii
,因爲現在它沒有時間欄!
所以解決方案取決於你想要的。
P.S.再給你一個建議:不要只用i
變量! MATLAB有預定義變量i = 0.0000 + 1.0000i
- 虛數單位。
我做了一些解決這一問題,並得到這個例子:
其中subsystem是:
注意:爲工作區塊保存結果爲Array
(避免時間列)。工作原理:在工作區中創建ii=0
。開始模擬。在啓用子系統時(t<=2
),它將以這種方式修改ii
值:在每個時間步增加ii
1。我的意思是:
t = 0, ii = 1
t = 1, ii = 2
t = 2, ii = 3
t = 3, ii = 3 ...
在下一次模擬我們加載ii
數組的最後一個值 - ii(end)
並以同樣的方式繼續模擬。
我已經嘗試過使用類似於你發佈的內容,但是當我想根據'switch'塊中的某些條件增加一個變量'ii'時,系統總是用舊的(未遞增的) ii',即使我通過「To Workspace」塊保存它。 – Dounchan
假設我想使用'ii = ii + 1'而不是'常量'塊的值爲'2'。我該怎麼做? – Dounchan
我在我的答案中添加了新的示例。希望它有幫助! –