【问题标题】:simulink-matlab function-variable size matrixsimulink-matlab 函数可变大小矩阵
【发布时间】:2016-06-23 14:02:34
【问题描述】:

我在 Simulink 中有一个 Matlab 功能块,它想成为一个调制器。 它得到一个[40000x1] 输入并应该返回一个[51x1] 输出,该函数的作用是从输入信号中找到转折点。 但是编译的时候总是有问题。

'数据'ext'被推断为可变大小矩阵,而它在模型资源管理器中的属性将其大小指定为继承或固定'

简化代码如下:

function ext= sig2ext(sig)

sig=sig(:);

w1=diff(sig); 

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

ext=sig(w);

【问题讨论】:

  • 你怎么知道w总是正好有51个true元素?
  • 抱歉没有说清楚。并不总是51个真正的元素,这只是一个例子,但输出数总是小于输入数。

标签: matlab function simulink


【解决方案1】:

您需要声明信号,或者特别是在您的情况下,输出信号是可变大小的。有相当多的文档描述了如何做到这一点:Variable Size Data

我建议您首先查看 Filter a Variable Size Signal,它会介绍其他文档页面上描述的所有步骤。

【讨论】:

  • 非常感谢您的回答,我将输出块检查为可变大小,但显示以下错误。 Simulink 无法从输出端口传播可变大小模式。可变大小模式源自“untitled/MATLAB Function/SFunction”。检查以下场景之一的“untitled/To File”的配置: 1) 块不支持可变大小信号; 2) 该块支持可变大小的信号,但需要对其进行配置。
  • MATLAB Function 模块确实支持可变大小的信号,因此您的模块配置不正确。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多