如何在Octave中将标签向量转换为二进制向量?

3
假设我有A = ones(10,1)*10, 那么 eye(10)(A,:) 是什么意思?我知道eye会生成一个10*10的单位矩阵,但我不太确定上面的代码在做什么。这段代码的Matlab等效代码是什么?
1个回答

7

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,:)

在Matlab中了解更多有关各种类型的矩阵索引


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接