Операции со строками матрицы

У меня есть матрица A = [1 2 3;2 5 9;2 3 4]. Теперь я хочу сделать поиск по всем элементам матрицы. Любой найденный элемент больше 8 должен быть обнаружен, и вся строка, относящаяся к этому элементу, должна быть удалена. Как в этом примере A(2,3)>8. Следовательно, в окончательной выходной матрице строка 2 должна быть удалена, а выходная матрица будет B = [1,2,3;2,3,4]


person Vivek Kumar    schedule 01.07.2013    source источник


Ответы (2)


Обратный ответ Шая обычно быстрее в циклах:

B = A( all(A<=8,2), : );

or

B = A( all(A<9,2), : );

если вы желаете.

Обратите внимание, что это может быть неверным в более новых версиях Matlab (я полагаю, что R2012a имеет определенные оптимизации JIT для циклов с удалением матриц). Тем не менее, это более безопасная ставка и может быть более интуитивно понятной.

person Rody Oldenhuis    schedule 01.07.2013

использовать логическое индексирование и команду any

>> selRowToDelete = any( A > 8, 2 ); % any value on dim 2 (rows)
>> A( selRowToDelete, : ) = []; % remove the rows
person Shai    schedule 01.07.2013