2016-03-08 64 views
0

我目前正在編寫一個帶有幾個模型的新庫(我習慣於Matlab,但不適用於Simulink)。我能夠創建一個帶有塊參數的模型,讓我們說參數'p'和一個回調函數(initfct),它使用這個參數來計算在我的模型中使用的特定值(假設一個簡單的增益K = K(p)) 。Simulink - 如何使用回調函數創建獨立的自定義塊

我的問題是我的參數'p'和'K'可以直接在工作區上使用,我不想要的。而且,如果我在一個系統中使用兩個或更多的這個模型,那麼這兩個模型總是有相同的'K',這也是我不想要的。

那麼當我多次使用自定義模型時,如何讓這些變量'p'和'K'獨立,並防止這些變量在工作區中被查看?

我應該使用「參考模型」,但我不熟悉此功能...?

感謝您的回答, 邁克爾

回答

1

在回調,gcb返回的路徑,目前執行的回調塊。有了路徑,您可以使用get_param來訪問參數。

只是爲了示範開始的目的,插入以下的延遲塊的MoveFcn:

set_param(gcb,'DelayLength',num2str(randi(10))) 

它會隨機改變延遲每當塊移動。

我不確定我的答案是否能解釋您需要的一切。這可能是你還需要一個面具。如果您認爲此答案不完整,請更新您的問題,並加入一個小型示例模型,以展示您的問題。

-1

謝謝,在您的幫助下,我能夠解決問題。

如果其他人遇到同樣的問題,您需要在面具中聲明回調函數使用的內部變量。取消選中相關選項,以使它們不會顯示爲模型的標準輸入參數。

我的問題是也使用num2str而不是mat2str(當增益是一個矩陣作用於多個輸入)。

+0

請不要添加「謝謝」作爲答案。一旦你有足夠的[聲譽](http://stackoverflow.com/help/whats-reputation),你將能夠[投票問題和答案](http://stackoverflow.com/help/privileges/vote- )你發現有幫助。 – cpburnz

相關問題