2011-03-26 411 views
2

我有三個包含時間和相應函數值的矩陣。我需要隨着時間的推移求和的函數值。這裏是我的數據集(數據列用紅色標記): 正如你所看到的,列有不同的時間和函數值,所以我需要先對它們進行插值。我想這個模型中,都沒有效果: enter image description hereSimulink插值[Matlab]

會明白在解決我的問題的任何幫助

回答

0

你可能想與「不變」塊來代替「從工作區」塊。

常量塊允許您將值設置爲任何可在命令提示符下評估的值。這包括香草數(1,6,100,1e6),數組(1:3,1:2:11,零(23,1),1(10,4)* 6)和工作空間變量(simin1,simin2 )。

另一方面,「從工作區」塊從變量中讀取每個執行的一個元素。

看起來你希望每次執行時都要將所有的點傳遞給interp函數。 (另一種措辭是:輸入到interp塊的「Pts」是一個常量,「in」端口(時間)是唯一改變每次執行的輸入。)

+0

Thnx for response。那麼,我在運行模型中只有simin1變量的第一個元素? – 2011-03-26 21:02:05

+0

如果您使用「from workspace」塊,則將有第一個元素用於第一次執行,第二個元素用於第二次執行,等等。這是「來自工作區」塊的功能。 從您的使用情況來看,您覺得您希望將整個表格輸入interp塊。如果您希望每次執行整個表,則不能使用「從工作區」。 您應該使用「常量」塊代替。 如果您無法理解,請嘗試將「顯示」塊連接到「常量」塊和「來自工作空間」塊。我想你會看到這個問題。 – Miebster 2011-03-28 05:26:04

+0

當我運行模型時,我總是會看到一個奇怪的數字,顯示simin1,這個數字甚至不在我的數據集中。 – 2011-03-28 18:57:56

0

我會使用「Lookup Table Dynamic 「在Simulink>查找表庫中代替interp塊,並將xdat(時間t列)和ydat(值)分別放在單獨的變量/常量中。

1

這聽起來像是你想在一組新的時間值內插你的三個表格函數,然後計算每個函數的運行總和(因爲你提到需要「隨着時間的推移求和的函數值」)。我相信你會需要兩個不同類型的塊來實現:

  • 一個Lookup Table block將讓你在不同時間點內插你的函數值。這將取代上面模型中顯示的「Interp」塊。有幾個不同的選擇這裏取決於你想如何初始化表數據模型:

    1. 如果你有一組數據將保持不變,在整個模擬,你可以硬編碼這個數據進入表數據塊的屬性。在這種情況下,您可以使用Lookup Table block,更一般的Lookup Table (n-D) blockInterpolation Using Prelookup block(與Prelookup block結合使用)。

    2. 如果要在模擬過程中從工作區加載表中的數據,你可以使用一個Lookup Table Dynamic blockInterpolation Using Prelookup block來源屬性設置爲使用的輸入端口。在這種情況下,您將不得不使用From Workspace block加載數據(如上所述),然後確保正確格式化表格數據以供插值塊使用。

  • 一個Cumulative Sum block將讓你保持一個運行總計您的功能創建隨時間變化的值。如果您想分別查看每個函數的運行總數,則必須在每個插值模塊的輸出中添加一個累計和模塊,然後將其發送到您的示波器。如果您想查看所有添加的功能的運行總數,那麼您可以像上面一樣使用Sum block來添加您的三個信號,然後在將其發送到您的示波器之前將累加和塊添加到該輸出。