0

我正在尝试将 MatLab 中的代码翻译成 R,但我被困在以下行:

SqO=U.* sqrt(D)*V'

我觉得我很接近:

SqO<-Conj(t(U%*%sqrt(D)*V))

...但输出仍然不匹配。如果有帮助,所有变量(Sq0、U、D 和 V)都是 20x20 矩阵。

4

2 回答 2

1

根据 HighPerformanceMark 所写的翻译应该是:

SqO=U.* sqrt(D)*V'  # Matlab

SqO <- U* sqrt(D) %*% t(V)  # R
于 2012-08-24T17:12:40.457 回答
1

嗯,我不是 R 方面的专家,但我确实知道一点 Matlab。Matlab 中的子表达式

U.* sqrt(D)

U对 的和平方根进行逐个元素的乘法运算D。即 element (i,j)inU乘以 element (i,j)in sqrt(D);所以这不是通常的矩阵乘法。那是你的U%*%sqrt(D)工作吗? sqrt(D)也对单个元素进行操作,即sqrt(D)~=D^(1/2)*D^(1/2).

然后Matlab代码将前面运算的结果乘以V(如果V是实数数组)的转置;再次,我的 R 太弱了,无法知道您是否已完成此操作或等效操作。

于 2012-08-24T16:34:28.287 回答