Matlab: проблема с удалением строк из массива, если выполняется определенное условие - PullRequest
0 голосов
/ 05 мая 2011

После создания массива данных (данных) я хочу удалить все строки, для которых Var4 принимает определенное значение. Вот что я сделал до сих пор:

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

Проблема, конечно, состоит в том, что массив становится короче при каждом запуске, условие выполняется, поэтому он останавливается перед проверкой всех строк. Когда i=length(data.perf) массив на 50 строк короче. Я думаю, что вы, ребята, получите проблему. Может кто-нибудь предложить мне элегантное решение? В будущем мне придется делать такие вещи довольно часто.

1 Ответ

5 голосов
/ 05 мая 2011

Вы уверены, что хотите вернуться к length(data.perf), а не просто length(data)? Это не ясно из контекста, но имело бы больше смысла ...

Первое предложение: обращение вашего цикла может решить проблему сокращения массива (for i = length(data.perf):-1:1 ...)

Более элегантным решением было бы сделать это без цикла for

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

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