Подбираем матрицу и используем логический выбор (matlab) - PullRequest
1 голос
/ 08 марта 2012

У меня есть строка кода в Matlab, для которой я выбираю подмножество матрицы:

A(3:5,1:3);

Теперь я хочу адаптировать эту строку, чтобы выбрать только те строки, для которых все три значения больше нуля:

(A(3:5,1:3) > 0);

Но, видимо, я не делаю это правильно. Как выбрать часть матрицы, а также убедиться, что выбраны только те строки (для которых все три значения) больше нуля?


РЕДАКТИРОВАТЬ: Чтобы уточнить: допустим, у меня есть матрица координат под названием A, которая выглядит следующим образом:

Matrix A [5,3]

3  4  0
0  1  0
0  3  1
0  0  0
4  8  7

Теперь я хочу выбрать только часть [3: 5,1: 3], и из этой части я хочу выбрать только строки 3 и 5. Как это сделать?

Ответы [ 2 ]

0 голосов
/ 08 марта 2012

Выражение:

A(find(sum(A(3:5,:),2)~=0),:)

вернет только те строки A(3:5,:), у которых сумма строк не равна нулю.

Если вы разместили синтаксически правильный Matlab, он бымне было проще вырезать и вставить ваши тестовые данные в мой сеанс Matlab.

0 голосов
/ 08 марта 2012

Я моделирую этот ответ из A(find( A > 0 ))

distances = pdist(find( pdist(medoidContainer(i,1:3)) > 0 ));

Это даст вам вектор значений в переменной distances. Причина, по которой pdist(medoidContainer(i,1:3) > 0) не работает, заключается в том, что сначала он находит индексы, указанные в i,1:3 в medoidContainer. Затем он находит в medoidContainer(i,1:3) индексы, которые больше 0. Однако, поскольку medoidContainer(i,1:3) и pdist теперь, вероятно, имеют разные измерения, сравнение не дает правильных индексов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...