我的程序中有一个单元格变量,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'}];
解决警告。