我试着用MATLAB函数生成C-代码。我必须处理单元格数组(不能更改此),并且出现了两个问题:
1:我想截断一个单元格数组,即
arr = cell(1,n);
% ...
arr = arr(1:m); % with m<n
MATLAB禁止(...)
索引,所以我尝试了以下方法
tmp = arr;
arr = cell(1,m);
for i = 1:m
arr{i} = tmp{i};
end
但这将引发错误,即“Matlab无法确定在该行之前分配了tmp{:}的每个元素”。如果我将arr
的每个元素分配给循环中的tmp
,也会发生同样的情况。
你知道如何解决这个问题吗?这样MATLAB编码器就不会抛出任何错误。
发布于 2019-06-24 07:45:56
取决于您使用的MATLAB编码器的哪个版本,您可以得到这个错误。为了避免完全的赋值检测问题,您可以键入:
arr = coder.nullcopy(cell(1,m));
但是你需要保证在那个任务完成后,你要给每个单元元素写信(你正在做的,因为
for i = 1:m
arr{i} = tmp{i};
end
发布于 2021-11-24 19:24:16
你可以用嵌入的花括号来做这件事。
arr_trunc = {arr{1:m}}
我希望这能帮到你。我用Coder测试了这个,没有发现错误。
https://stackoverflow.com/questions/56703572
复制相似问题