在工作区的 Simulink/MATLAB 函数中设置信号维度

Setting dimension of signal in Simulink/MATLAB function from workspace

假设我有一个包含如下内容的 Simulink 块:

function y  = myFnc(x, par)

y = zeros(1, par(1)) + x;

我在 模型资源管理器 中将 par 声明为参数,并从工作区读取其值。 现在,Simulink 推断 y 是一个 可变大小信号 ,具有与之相关的所有非常讨厌的限制。

有没有什么方法可以参数化来自工作区的信号维度,同时又以某种方式使信号保持固定大小?

在 C/C++ 中,我只声明一个常量。

有一些限制的工作是创建一个 class 具有常量属性,例如:

    classdef DIMS
        properties (Constant)
            NR_SIGNALS          = 10
            LEN_SIG             = 32000 
            BLOCKS              = 2 * DIMS.NR_SIGNALS
        end
    end 

... 并在适用的情况下使用常量属性(例如 DIMS.LEN_SIG)作为参数。

参数化将在模型编译时固定,甚至在生成的代码中进行硬编码(如果适用)。