Эффективное удаление элементов матрицы - PullRequest
0 голосов
/ 09 марта 2011

Я хочу эффективно удалить много данных из начала матрицы измерения 2 * n. Матрица выглядит так:

x1 x2
x3 x4
...
...

Я хочу удалить все строки, в которых первый элемент строки меньше некоторого числа, и остановиться, если строка не меньше (элементы расположены в числовом порядке)

Что я делаю в данный момент медленно:

while 1 
   if list{i}(1) <= someNumber
      list{i}(1,:) = []
   else
      break;
   end
end

Должен быть аккуратный способ сделать это быстро в MATLAB?

Спасибо.

1 Ответ

2 голосов
/ 09 марта 2011

Один из способов - просто сравнить весь первый столбец за один раз, а затем удалить, т.е.

rows2delete = list{i}(:,1) <= someNumber; %# creates logical array with 1 for deletion
list{i}(rows2delete,:) = []; %# delete some rows, all corresponding cols
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...