为什么诊断diag(s)* C * diag(s);在Matlab?

时间:2011-10-06 18:39:16

标签: matlab

在Matlab中,这似乎更像是一个算法问题,但有人可以解释Sigma_0=diag(s)*C*diag(s)的逻辑吗?

s=.07*ones(N,1);
Sigma_0=diag(s)*C*diag(s);

谢谢

1 个答案:

答案 0 :(得分:3)

它将所有列缩放0.07,然后将行缩放0.07。

然而,这与:

完全相同
  Sigma_0=C * 0.07^2;

如果s不是标量乘以1的向量,那么这将按行数和列数进行缩放。例如,如果C为4x4且s=[1 2 3 4],那么diag(s)*C会将第一行缩放1,第二行缩小为2等。同样,C*diag(s)会缩放第一行列乘1,第二列乘2等。