2015-05-31 30 views
0

我已經創建了一個簡單的仿真模型,其增加了兩個信號: Simulink Model簡單Matlab/Simulink仿真模型,加入2個信號

來控制該模型的代碼如下:

clear X Y Result 

data=ones(1,5); 
X=timeseries(data); 
Y=timeseries(data); 

output = sim('model_test','StopTime',stop_time); 
Result = output.get('Res'); 

顯然,我希望得到以下結果,一個包含[2 2 2 2 2]的矩陣。 然而,我的結果是這樣的: Simulink Result

結果是希望有一個1x1x27雙,而不是一個1×5雙。 你知道我必須改變嗎?我的代碼是否有錯,或者是否必須更改simulink模型中的設置?先謝謝你!

回答

4

問題在於如何構建輸入數據。

timeseries構造函數XY的語法使得它們在時間上的標量值等於0,1,2,3和4秒。你可以通過查看X.TimeX.Data來查看。

從您期待的看起來,您希望將它們定義爲每個時間步的5個元素向量。這將涉及使用

>> X = timeseries(ones(1,5),0); 

或類似的東西取決於你想定義多少時間點。以上僅在時間= 0秒時定義數據。再次查看MATLAB Workspace中的變量來確認這一點。 (當然,如果你打算在每個時間步具有相同的值,那麼你應該只使用一個常量塊而不是一個工作區塊)。

輸出(與輸入一樣)顯示爲三維矩陣,因爲第三維度是時間。對於您的模型所需的每個模擬時間步驟,您都將獲得一個信號值。在你的模型中它是一個標量,但是一般來說它可以是任何2D矩陣。你得到1x1x27的結果,因爲你的信號是標量(1x1位)和27個時間步長(x27位)。

+0

打敗了我。 +1。 – rayryeng

+0

非常感謝你,這有幫助! – user1956123