假设我有 A=ones(10,1)*10 那么这是做什么 eye(10)(A,:) ??
我知道 eye 给出了 10,10 单位矩阵,但我不太确定上面的代码在做什么。 Matlab 中的等效代码是什么?
最佳答案
A=ones(10,1)*10
只是制作一个 10s 的列矩阵(10 行,1 列)。
eye(10)
生成一个 10x10 单位矩阵。
(A,:)
索引到您刚刚制作的单位矩阵中。 A
在这里充当eye(10)
矩阵的数字 索引。假设 A
只是 10。那么 myMatrix(A,:)
将选择 myMatrix
的第 10 行。由于 A
是 10 行,共 10 行,myMatrix(A,:)
选择 myMatrix
的第 10 行,< em>10 次。因此,您从 eye(10)
的第 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 - 如何将标签向量转换为 Octave 中的二进制向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9177192/