我正在尝试将MatLab中的代码转换为R,但我仍然停留在以下行:
SqO=U.* sqrt(D)*V'
我觉得我很亲近:
SqO<-Conj(t(U%*%sqrt(D)*V))
...但输出仍然不匹配。如果有帮助,所有变量(Sq0,U,D和V)都是20x20矩阵。
答案 0 :(得分:1)
U.* sqrt(D)
逐个元素乘以U
和D
的平方根。也就是说,(i,j)
中的元素U
乘以(i,j)
中的元素sqrt(D)
;所以这不是通常的矩阵乘法。那是你的U%*%sqrt(D)
做的吗? sqrt(D)
也针对各个元素进行操作,即sqrt(D)~=D^(1/2)*D^(1/2)
。
然后,Matlab代码将前一个操作的结果乘以V
的转置(如果V
是真实数组);再一次,我的R太弱了,无法知道你是做了这个还是一个等效的操作。
答案 1 :(得分:1)
从HighPerformanceMark编写的翻译应该是:
SqO=U.* sqrt(D)*V' # Matlab
SqO <- U* sqrt(D) %*% t(V) # R