2016-06-23 335 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功能块支持可变大小的信号,所以您没有正确配置您的块。 –