【问题标题】:Error while deleting cell array elements in matlab在matlab中删除元胞数组元素时出错
【发布时间】:2014-12-07 19:43:03
【问题描述】:

我有以下一维元胞数组:

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

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

for i = 1:4

obj (i) = [ ];

end

但是,我收到错误:

要移除的元素索引超出矩阵维度,并且以下元素保留在 'obj' 数组中:'Cloud' 'Lightning'

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

有什么问题?

【问题讨论】:

    标签: arrays matlab cell element


    【解决方案1】:

    不需要循环

    obj(1:4) = [];
    

    您的代码说明:

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

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

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

    obj = { 'Cloud' 'Lightning'}
    

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

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

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

    【讨论】:

    • 或者,for i=1:4, obj(1)=[]; end :-) 但说真的,你是对的,obj(1:4)=[]; 是最好的。
    • 我发现了另外一种方法(youtube.com/watch?v=kKTMg3tn3J0),如下:for i = 4:-1:1 obj (i) = [ ];结束
    猜你喜欢
    • 2016-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-01
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多