2011-01-31 43 views
1

我正在實施一些頭部跟蹤,我得到了2個水平速度矩陣。 (矢量場分解爲垂直和水平速度)。對於這些矩陣中的每一個,我都會用一些數學來計算實際的頭部跟蹤。Simulink中有沒有一種方法可以在多個信號上使用相同的一組模塊(而不需要複製這些模塊)?

我的問題是,有沒有辦法在兩個矩陣上做數學運算(它是一組塊),而不會將數學塊複製到每個信號上?

很難所以這裏解釋一下我的模型的屏幕截圖: simulink model http://luka.s3.amazonaws.com/headtracking.png 您可以看到「複雜到現實IMAG」塊有2個輸出(這是小傢伙在中間)。平均塊和積分器電路然後計算真實矩陣的頭部速度和位置(水平位置)。我想在虛數矩陣(垂直方向)上執行完全相同的例程。顯然,我可以複製塊,但肯定有一個更好的方法來做到這一點?在某種程度上,我正在尋找一種類似於「正常編程」的循環,比如C或其他東西,其中一段代碼在不同的輸入上執行多次。

回答

1

一種輕鬆重用一組塊的方法是從其中取出create a subsystem。在你的情況下,你可以create a subsystem by grouping existing blocks,然後簡單地複製並粘貼你的子系統,以便將它用於你的虛構輸出。

雖然可能更復雜,但您也可以使用mux signals來避免複製模型的某些部分。

+0

有沒有辦法將這些子系統連接起來,以便將其中的變化傳播到所有的克隆? – lms 2011-01-31 17:14:23

+0

@codenoob:不是我所知道的,這就是爲什麼我在我的答案(多路複用信號)中列出了另一個選項,您可能想要查看。 – gnovice 2011-01-31 17:17:31

5

您可以在Simulink中創建一個庫,其中包含可以多次引用的代碼。

轉到文件 - >新建 - >庫。在打開的模型窗口中,您可以使用任何您想要的代碼創建任意數量的子系統。然後,將一個子系統從庫中拖入模型中。子系統現在將出現在您的模型中,左下方有一個小箭頭圖標。這表明模型中的子系統是一個鏈接。您可以根據需要將盡可能多的庫子系統實例拖入模型中,就像您可以在任何其他編程語言中多次調用函數一樣。

如果右鍵單擊模型中的子系統,則可以選擇「鏈接選項 - >轉到庫塊」以返回庫。您可以對模型進行更改,並將它們傳播回庫。

相關問題