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循环创建场景。有可能吗?