嵌入式函数中的可变大小元素但固定输入和输出

Variable size element in embedded function but fixed input and output

我的 simulink 嵌入式函数有固定的输入和输出。 但是我想在函数内计算一个可变大小的元素(仅用于计算)。

因此我不想将块声明为接收或发送动态大小信号。 (或使用 coder.varsize)

例如:

  K =  find( p_var(:) == 0 );     % p_var is a vector containing some zeros
  p_var(K) = [];                  % p_var is a therefore a varsize vector 
                           % the variability is something I need for reason

  n = length(p_var)               % n is dynamic

  M = ones(10,n)                  % M & L are also dynamic
  L = ones(n,50)

  G = M*L;                        % G is fixed of size [10*50]

这里变量 G 总是固定的...但我有这种类型的错误:

 Dimension 2 is fixed on the left-hand side but varies on the right ([1 x 9] ~= [1 x :?])

感谢您的宝贵时间。

您必须为 p_var 的大小定义上限。这可以通过多种方式完成,例如使用 coder.varsize,如下所示。

其他一些注意事项:

  1. 如果 p_var 是您函数的输入,您无法更改其大小,但需要一个临时变量,如下所示。

  2. 您很可能不想像您那样使用 find,而应该使用逻辑索引。

    function G = fcn(u)

    p_var = u;

    coder.varsize('p_var', [10,1]);

    p_var(p_var(:) == 0) = []; % p_var is therefore a varsize vector the variability is something I need for reason

    n = length(p_var); % n is dynamic

    M = ones(10,n); % M & L are also dynamic L = ones(n,50);

    G = M*L; % G is fixed of size [10*50]