假设我有A = ones(10,1)*10,
那么 eye(10)(A,:) 是什么意思?我知道eye会生成一个10*10的单位矩阵,但我不太确定上面的代码在做什么。这段代码的Matlab等效代码是什么?
A=ones(10,1)*10
只是创建一个由10组成的列向量(10行,1列)。
eye(10)
创建一个10x10的单位矩阵。
(A,:)
索引到刚刚创建的单位矩阵。这里的A
作为数值索引到eye(10)
矩阵中。假设A
只是10。那么myMatrix(A,:)
将选择myMatrix
的第10行。由于A
是10个10 行,myMatrix(A,:)
选择myMatrix
的第10行,10次。因此,你会得到eye(10)
的第10行重复出现10次。
如果你使用A=ones(5,1)*10
并查看eye(10)(A,:)
可能会更少混淆;请注意,现在你只会5次地得到A
的第10行。
在Matlab中不能直接这样做,因为它不允许你进行一次性的eye(10)(A,:)
操作。你需要分两步完成:
A = ones(10,1)*10
I = eye(10)
I(A,:)