嵌入式函数中的可变大小元素但固定输入和输出
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
,如下所示。
其他一些注意事项:
如果 p_var
是您函数的输入,您无法更改其大小,但需要一个临时变量,如下所示。
您很可能不想像您那样使用 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]
我的 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
,如下所示。
其他一些注意事项:
如果
p_var
是您函数的输入,您无法更改其大小,但需要一个临时变量,如下所示。您很可能不想像您那样使用
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]