我有一个大小为(m,1)的向量v,其元素是从1到n选择的整数。我想创建一个大小为(m,n)的矩阵M,其元素M(i,j)在v(i)=j时为1,在其他情况下为0。我不想使用循环,并希望仅通过简单的向量-矩阵操作实现此目标。
因此,我首先考虑创建一个具有重复元素的矩阵。
例如,v=[1,1,3,2]',其中m=4,n=3。
因此,我首先考虑创建一个具有重复元素的矩阵。
M = v * ones(1,n) % this is a (m,n) matrix of repeated v
例如,v=[1,1,3,2]',其中m=4,n=3。
M =
1 1 1
1 1 1
3 3 3
2 2 2
接下来我需要创建一个大小为(1,n)的比较向量c。
c = 1:n
1 2 3
然后我需要执行一系列的逻辑比较。
M(1,:)==c % this results in [1,0,0]
.
M(4,:)==c % this results in [0,1,0]
然而,我认为可以通过紧凑的矩阵符号执行遍历每一行的最后一步骤,但是我被卡住了,对索引不够了解。
最终结果应该是:
M =
1 0 0
1 0 0
0 0 1
0 1 0
.'
是执行转置操作,无论数组是实数还是复数。 单独使用'
将执行复杂转置。 我使用点号是因为我明确想要表达这一点。 虽然这更多是一种风格选择。 在你的情况下,你没有虚部,所以你可以使用任何一个,但我习惯使用.'
。 不使用它已经让我吃过几次亏...所以我习惯使用它。 - rayryeng.'
!以下是两个使用'
而意思应该是.'
的错误示例:https://dev59.com/Tn3aa4cB1Zd3GeqPcFok http://stackoverflow.com/questions/23509241/whats-the-difference-between-two-way-to-input-matlab-complex-matrices - Luis Mendo