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 .