【问题标题】:MATLAB: deleting elements from multi-level cellMATLAB:从多级单元格中删除元素
【发布时间】:2017-10-18 21:44:29
【问题描述】:

我有一个大的多级单元格,我试图在 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

【问题讨论】:

  • 我可以看到整个代码吗?

标签: arrays matlab loops for-loop cell


【解决方案1】:

让我们将 List{1}{17}{imagenum} 分配给:

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

是“一个”单元还是数组?如果是数组:

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

一般规则:当您在循环中删除项目时,您从末尾开始,而不是从头开始。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-26
    相关资源
    最近更新 更多