Matrix 为什么diag在倍频程中表现出不一致的行为
有人能解释一下这是怎么回事吗Matrix 为什么diag在倍频程中表现出不一致的行为,matrix,octave,diagonal,Matrix,Octave,Diagonal,有人能解释一下这是怎么回事吗 octave:1> t = eye(3) t = Diagonal Matrix 1 0 0 0 1 0 0 0 1 octave:2> diag(t(3,:)) ans = Diagonal Matrix 0 0 0 0 0 0 0 0 1 octave:3> diag(t(2,:)) ans = Diagonal Matrix 0 0
octave:1> t = eye(3)
t =
Diagonal Matrix
1 0 0
0 1 0
0 0 1
octave:2> diag(t(3,:))
ans =
Diagonal Matrix
0 0 0
0 0 0
0 0 1
octave:3> diag(t(2,:))
ans =
Diagonal Matrix
0 0 0
0 1 0
0 0 0
octave:4> diag(t(1,:))
ans = 1
为什么前两个返回3x3矩阵,而最后一个只是一个数字?问题的产生是因为t(1,:)是从eye(3)创建的 如果单独输出t的行,则结果为:
octave.28> t(1,:)
ans =
**Diagonal Matrix**
1 0 0
octave.29> t(2,:)
ans =
0 1 0
octave.30> t(3,:)
ans =
0 0 1
由于某种原因(我无法解释),t(1,:)仍然被认为是对角矩阵,而t(2,:)和t(3,:)是向量。调用diag(t(:,1))时,它接收的不是向量参数,而是矩阵。如果在求值之前将t(:,1)转换为向量,则会得到预期的结果
octave.31> diag(vec(t(1,:)))
ans =
**Diagonal Matrix**
1 0 0
0 0 0
0 0 0