我有一个大的多级单元格,我试图在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
答案 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
一般规则:当你删除循环中的项目时,从头开始,而不是从头开始。