MATLAB:从多级单元格中删除元素

时间:2017-05-18 22:12:33

标签: arrays matlab loops for-loop cell

我有一个大的多级单元格,我试图在for循环中删除它的一部分但是无法通过“错误:等号左边的表达式不是有效的目标作业。“ 尝试了几个版本并继续遇到同样的错误。

for i=1:length(List{1}{17}{imagenum})
     if List{1}{17}{imagenum}(i)>1
          List{1}{17}{imagenum}(i)=[];
     end
end

单独的问题:当我在for循环中删除单元格/任何内容的部分时,是否有标准/智能方法确保for循环保持正常?我一直在使用变量来跟踪删除,但我假设有一种更聪明的方法:

deletions=0;

for i=1:length(List{1}{17}{imagenum})
     if List{1}{17}{imagenum}(i-deletions)>1
          List{1}{17}{imagenum}(i-deletions)=[];
          deletions=deletions+1;
     end
end

1 个答案:

答案 0 :(得分:0)

我们将列表{1} {17} {imagenum}分配给:

a = List{1}{17}{imagenum}; 

是' a'细胞或阵列?如果是数组:

for i = numel(a):-1:1
    if a(i)>1, a(i) = []; end
end

更简单的方法应该是:

a(a>1) = [];

如果是细胞:

for i = numel(a):-1:1
    if a{i}>1, a(i) = []; end 
end

一般规则:当你删除循环中的项目时,从头开始,而不是从头开始。