Применение матрицы для глаз

Следующие строки:

a=[1;2;10;9]
eye(10)(a,:)

возвращаться:

[1   0   0   0   0   0   0   0   0   0
 0   1   0   0   0   0   0   0   0   0
 0   0   0   0   0   0   0   0   0   1
 0   0   0   0   0   0   0   0   1   0]

Как это работает? Почему он получил значение?


person user901773    schedule 22.05.2012    source источник


Ответы (1)


Он выбирает строки 1,2, 10 и 9 и все столбцы из единичной матрицы 10x10.

Без промежуточного шага, как показано ниже, это дает мне синтаксическую ошибку. Вы пропустили этот шаг или изменили синтаксис для этого между версиями Matlab?

a=[1;2;10;9];
eye(10)(a,:)

Урожайность ??? Error: ()-indexing must appear last in an index expression.

Это дает матрицу, которую вы опубликовали:

e = eye(10); 
e(a,:)
person Junuxx    schedule 22.05.2012
comment
Octave Online позволяет вам сделать это без промежуточного шага ... хотя здесь нет Matlab, чтобы проверить это. - person tmpearce; 22.05.2012
comment
@tmpearce: Интересная разница. Но, по крайней мере, матричная нарезка/адресация должны работать одинаково. - person Junuxx; 22.05.2012