2016-06-23 330 views
-2

我在Simulink中有一個Matlab函數塊,它想成爲一個調製器。 它得到一個[40000x1]輸入,並應該返回一個[51x1]輸出,該函數用於從輸入信號中找到轉折點。 但編譯時總會有問題。simulink-matlab函數變量大小矩陣

「數據‘EXT’作爲繼承被推斷爲可變大小矩陣,而其在Model Explorer屬性指定其尺寸或固定」

簡化代碼如下示:

function ext= sig2ext(sig) 

sig=sig(:); 

w1=diff(sig); 

w=logical([1;(w1(1:end-1).*w1(2:end))<=0;1]); 

ext=sig(w); 
+0

你怎麼知道'w'總是有51個'true'元素? –

+0

對不起,不清楚。它並不總是51個真實的元素,它只是一個例子,但輸出數字總是小於輸入數字。 –

回答

0

你需要聲明信號,或者特別是在你的情況下,輸出信號是可變大小的。有相當多的文檔描述了這樣做:Variable Size Data

我建議您首先查看Filter a Variable Size Signal,其中介紹了其他文檔頁面上描述的所有步驟。

+0

非常感謝您的回答,我將輸出塊檢查爲可變大小,但顯示以下錯誤。 Simulink無法從輸出端口傳播可變大小模式。可變大小模式來源於'untitled/MATLAB Function/SFunction'。檢查以下情況之一的'untitled/To File'的配置:1)塊不支持可變大小的信號; 2)該模塊支持可變尺寸信號,但需要爲它們配置。 –

+0

MATLAB功能塊支持可變大小的信號,所以您沒有正確配置您的塊。 –