Matlab:如果某个条件为真,则从数组中删除行时出现问题

时间:2011-05-05 10:58:32

标签: arrays matlab loops dataset

创建数据集数组(数据)后,我想删除Var4取特定值的所有行。这是我到目前为止所做的:

for i=1:length(data.perf)
    if data.Var4(i)==2
        data(i,:)=[]
    end
end

问题当然是数组在条件成立的每次运行中变短,因此在检查所有行之前它会停止。当i=length(data.perf)数组缩短约50行时。我想你们得到了问题。有人可以建议我一个优雅的解决方案吗?我将来必须经常这样做。

1 个答案:

答案 0 :(得分:5)

您确定要循环到length(data.perf)而不只是length(data)吗?从背景来看并不清楚,但会更有意义......

第一个建议:反转你的循环可以解决数组变短的问题(for i = length(data.perf):-1:1 ...)

更优雅的解决方案是在没有for循环的情况下完成

data(data.Var4==2, :) = [];