MATLAB Coder:截断/串联单元格数组

时间:2019-06-21 12:34:08

标签: matlab code-generation

我正在尝试从MATLAB函数生成C代码。我必须处理单元阵列(我无法更改此设置),并且出现了两个问题:

1:我想截断单元格数组,即

arr = cell(1,n); 
% ...
arr = arr(1:m);   % with m<n

MATLAB Coder禁止(...)索引,所以我尝试了以下

tmp = arr;
arr = cell(1,m);
for i = 1:m
    arr{i} = tmp{i};
end

但这会引发错误,即“ Matlab无法确定tmp {:}的每个元素都在此行之前分配了”。如果我在循环中将arr的每个元素分配给tmp,也会发生同样的情况。

  1. 当我尝试串联两个单元格数组时,会发生相同的问题。

您知道如何解决此问题,以便MATLAB Coder不会抛出任何错误。

1 个答案:

答案 0 :(得分:0)

根据所使用的MATLAB Coder版本,您可能会遇到此错误。 为了避免出现完整的分配检测问题,您可以输入:

arr = coder.nullcopy(cell(1,m));

但是您需要保证您要在分配之后写入每个单元格元素(您正在这样做,因为

for i = 1:m
    arr{i} = tmp{i};
end