Как преобразовать вектор меток в двоичный вектор в Octave? - PullRequest
3 голосов
/ 07 февраля 2012

предположим, у меня есть A = единицы (10,1) * 10, тогда что это делает eye (10) (A, :) ??

я знаю, что eye дает матрицу тождественности 10,10, но яЯ не совсем уверен, что делает приведенный выше код.и что такое эквивалентный код в Matlab?

1 Ответ

5 голосов
/ 08 февраля 2012

A=ones(10,1)*10 просто создает матрицу столбца (10 строк, 1 столбец) из 10 с.

eye(10) создает матрицу идентификаторов 10x10.

(A,:) индексирует в идентификаторематрица, которую вы только что сделали.A здесь действует как числовой индекс в матрице eye(10).Предположим, что A было всего 10. Тогда myMatrix(A,:) выберет 10-ю строку myMatrix.Поскольку A равно 10 строк из 10, myMatrix(A,:) выбирает 10-ю строку myMatrix, 10 раз .Таким образом, вы возвращаетесь в десятый ряд eye(10) 10 раз.

Это может быть менее запутанным, если вы сделаете A=ones(5,1)*10 и посмотрите на eye(10)(A,:);обратите внимание, что теперь вы получаете только 10-й ряд A 5 раз.

Вы не можете сделать это как таковой в Matlab, потому что он не позволяет вам сделать один удар eye(10)(A,:).Вы должны сделать это в два этапа:

A = ones(10,1)*10
I = eye(10)
I(A,:)

Подробнее о различных типах матричной индексации в Matlab .

...