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