【发布时间】:2026-01-03 04:00:01
【问题描述】:
我的程序中有一个单元格变量,Matlab 警告要预先分配它。简单的代码形式是这样的:
for i = 1:2
a = [];
a = [a,{'abc'}];
end
首先我想知道为什么应该预先分配a,因为它在每个循环中都会被重置。其次,我不知道如何预先分配它。当我尝试这样做时,Matlab 给了我另一个警告,说“变量似乎是预分配的,但这里不建议预分配”。
我在循环之前使用了这段代码:
a = cell(1,2);
更具体:
for i = 1:2
a = [];
if condition1
a = {'abc'};
end
if condition2
a = [a,{'def'}];
end
b = [{'string'},a];
end
如果条件不成立,我希望 b 成为 1x1 元胞数组,因此我需要在每个循环中将 a 重置为空 var。
更新:
李的回答暗示了我找到了一种方法,但仍然不知道为什么。使用a = [a(:),{'def'}]; 而不是a = [a,{'def'}]; 解决了警告。
【问题讨论】:
标签: matlab cell-array pre-allocation