【发布时间】:2023-03-31 11:32:02
【问题描述】:
我正在尝试从 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 就不会抛出任何错误。
【问题讨论】:
-
有趣的是它不会承认
tmp = arr;是一个副本......也许核心器有时会使用一个指针并且它在这里感到困惑。你能在复制之前用tmp=cell(1,n);初始化temp吗?甚至可能为tmp = arr;制作一个循环,而不是单行 -
我尝试通过循环将
arr复制到tmp,但给出了相同的错误消息。 -
包括我建议的初始化?
-
是的,正是……