Удаление строк, содержащих ноль - PullRequest
1 голос
/ 31 августа 2011

Я пытаюсь найти лучший способ удаления строк из некоторых векторов, которые содержат ноль. То, что я делаю сейчас, это следующий код:

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

Полагаю, есть более простой способ, и я очень признателен за любую помощь.

С уважением, Ахим

Ответы [ 2 ]

10 голосов
/ 01 сентября 2011
>> 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
5 голосов
/ 31 августа 2011
  1. Научитесь использовать векторные операции.
  2. Научитесь избегать циклов, особенно плохи циклы, которые изменяют размер ваших массивов в каждом проходе.
  3. Научитесь использовать логическое индексирование вместо поиска. Это быстрее.

    X (X == 0) = [];

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...