在matlab中删除单元数组元素时出错

时间:2014-12-07 19:43:04

标签: arrays matlab cell element

我有以下1-D单元格阵列:

obj = {'HotAirBalloon' 'Cloud' 'Sun' 'Lightning'};

我尝试使用for循环以下列方式删除其元素:

for i = 1:4

obj (i) = [ ];

end

但是,我收到了错误:

  

要删除的元素的索引超出矩阵维度,并且以下元素保留在' obj'阵列:'云' '闪电'

如果我重复操作(for循环),则删除元素。

问题是什么?

1 个答案:

答案 0 :(得分:2)

不需要循环

obj(1:4) = [];

您的代码说明:

在第一次迭代(i = 1)中使用循环时,您拥有obj(1) = [];,然后obj拥有3个元素,

obj = { 'Cloud' 'Sun' 'Lightning'}

在第二次迭代中obj(2)=[]实际上是obj(3)sun)。所以在第二个循环结束时:

obj = { 'Cloud' 'Lightning'}

在第三次迭代中,obj(3) = []超出了obj的维度,您就会收到错误。

如果你想使用循环,可以像这样使用它,

for i = ones(1,4)
    obj(i) = [];
end