Найти значения в матрице и поместить их в вектор - PullRequest
3 голосов
/ 18 октября 2010

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

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

[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), но это n-на-n вместо n-на-1.

1 Ответ

7 голосов
/ 18 октября 2010

Вы можете неявно обрабатывать матрицу как вектор ( линейное индексирование ):

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

Обратите внимание, что вы можете сделать это более эффективно с помощью логического индексирования :

values = A(A > 5);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...