2014-11-12 2 views
1

У меня есть матрица, 40x20. Я хочу удалить все элементы меньше, чем можно сказать a.Условные элементы, удаляемые из матрицы

Я знаю, как сделать это для столбца или строки, используя логическую индексацию:

idxToKeep = yourMat(1, :) <= a; 
newMat  = yourMat(:, idxToKeep); 

Но что, если idxToKeep я получаю также матрица. Я могу представить, как это сделать, используя циклы, но я не хочу использовать цикл.

Спасибо за ваше время

ответ

2

Это то, что вам нужно?

idxToKeep=yourMat<=a; 
values=yourMat(idxToKeep); 

Off Конечно, вы можете сделать это в одной строке, если вы хотите:

values=yourMat(yourMat<=a); 

И если вы хотите, чтобы вывод в формате матрицы:

newMat=yourMat; 
newMat(newMat>a)=NaN; %or 0 
+0

+1 Следует добавить что это возвращает вектор, а не матрицу. Форма матрицы не может быть сохранена в общем случае с удалением произвольных записей –

+1

@LuisMendo правильно. Я добавил абзац для создания матрицы со всеми элементами, не соответствующими критерию, установленному в NaN. –

+0

Большое вам спасибо за помощь – Omer

Смежные вопросы