我正在尝试从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
,也会发生同样的情况。
您知道如何解决此问题,以便MATLAB Coder不会抛出任何错误。
答案 0 :(得分:0)
根据所使用的MATLAB Coder版本,您可能会遇到此错误。 为了避免出现完整的分配检测问题,您可以输入:
arr = coder.nullcopy(cell(1,m));
但是您需要保证您要在分配之后写入每个单元格元素(您正在这样做,因为
for i = 1:m
arr{i} = tmp{i};
end