2010-10-17 4 views
3

Это должно быть просто, но удивительно, что я не мог найти ответ на эту проблему здесь или путем проб и ошибок.
Я хочу получить значения из матрицы (в соответствии с некоторым условием) и поместить значения в вектор. Мне также нужны индексы индексов соответствующих значений. Существует много данных, поэтому для циклов нет.Найти значения в матрице и поместить их в вектор

Это правильный (но итерационный) Ответ:

[I,J] = find(A > 5); 
values = zeros(numel(I),1); 
for i=1:numel(I) 
    values(i) = A(I(i),J(i)); 
end 

Я попытался values = A(I,J), но это п-по-п вместо п-на-1.

ответ

7

Вы можете неявно рассматривать матрицу как вектор (linear indexing):

I = find(A > 5); 
values = A(I); 

Обратите внимание, что вы можете сделать это более эффективно с logical indexing:

values = A(A > 5); 
+2

+1. логические правила индексирования! –

+0

Интересно, если быстрее использовать sub2ind и найти или найти (для индексов) и логическую индексацию ... –

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

  • Нет связанных вопросов^_^