有人可以解释这里发生了什么吗?
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矩阵,但最后一个只是一个数字?
答案 0 :(得分:1)
由于从眼睛(3)创建t(1,:)的方式,出现了问题。
如果单独输出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