删除包含零的行

时间:2011-08-31 13:19:54

标签: matlab

我试图找到一种更好的方法来删除包含零的一些向量中的行。我现在正在做的是以下代码:

i = 1;
while i <= length(JAbs)
    if JAbs(i) == 0
        JAbs(i) = [];
        JX(i) = [];
    else
        i = i+1;
    end
end

我想有一种更简单的方法,非常感谢任何帮助。

祝你好运, Achim的

2 个答案:

答案 0 :(得分:10)

>> X=[1 2 3; 3 2 0; 1 2 3;0 3 2]
X =
     1     2     3
     3     2     0
     1     2     3
     0     3     2

删除带零的行

X(sum((X==0),2)>0,:) = []

结果:

X =
     1     2     3
     1     2     3

答案 1 :(得分:5)

  1. 学习使用矢量操作。
  2. 学会避免循环,尤其是在每次传递中都有可能导致数组大小的循环。
  3. 学习使用布尔索引而不是查找。它更快。

    X(X == 0)= [];