Arrays Push-Pop单元阵列Matlab 我想在嵌套for循环中在运行时从Matalb的单元数组中删除一些单元格,这样我就希望永久删除单元格,在下次迭代时,它不会认为小区将它的下一个单元格作为它的位置,如何在Matlab中执行,或者在这种情况下避免任何数组的建议。我的单元格数组M包含对象信息,P是位置值

Arrays Push-Pop单元阵列Matlab 我想在嵌套for循环中在运行时从Matalb的单元数组中删除一些单元格,这样我就希望永久删除单元格,在下次迭代时,它不会认为小区将它的下一个单元格作为它的位置,如何在Matlab中执行,或者在这种情况下避免任何数组的建议。我的单元格数组M包含对象信息,P是位置值,arrays,matlab,loops,for-loop,cell,Arrays,Matlab,Loops,For Loop,Cell,我的代码: for ii=1:1000 for jj=1:20 M{jj}=P{jj}(ii,:); if (P{jj}(ii,:) ~= 0) %here I want to delete M(jj) or M{jj} and also P(jj) or P{jj} % My try M(jj) = []; M= M(~cellfun('isempty',M)); %but it

我的代码:

for ii=1:1000
    for jj=1:20
        M{jj}=P{jj}(ii,:);
        if (P{jj}(ii,:) ~= 0)
            %here I want to delete M(jj) or M{jj} and also P(jj) or P{jj}
            % My try  M(jj) = []; M=  M(~cellfun('isempty',M));
            %but it gives error when the next iteration starts.
        end
    end
end

对于这种特殊情况,我建议使用
while
而不是
for
-

ii=1;
jj=1;

jj_limit = 20;
while ii<=1000
    while jj<=jj_limit
        M{jj}=P{jj}(ii,:);
        if (P{jj}(ii,:) ~= 0)
            P(jj)=[];
            M(jj)=[];
            jj_limit = jj_limit-1;
            continue;
        end
        jj = jj+1;
    end
    ii = ii+1;
end
ii=1;
jj=1;
jj_极限=20;

虽然我认为如果(M{jj}==0),它不会到达条件语句的内部,因为在条件语句之前分配
M{jj}
的方式。这只是一个例子,请检查编辑的代码,在这种情况下,我想删除一些
jj
,比如
jj=2
。但是我想为ii=1:dt:1000增加步长为
。所以只需替换
ii=ii+1
ii=ii+dt好的,我已经试过了,但是
while
对我的情况没有帮助。我不知道为什么,但我认为这是for循环所必需的,而且我想对我的操作进行切片,以便稍后使用
parfor
循环。这可能是因为您拥有数据的方式。在
parfor
上,不确定它是否可以处理条件语句。请为
for循环创建场景。有可能吗?