将MatLab转换为R - 数组乘法&复共轭转座

时间:2012-08-24 16:20:11

标签: r matlab translate transpose

我正在尝试将MatLab中的代码转换为R,但我仍然停留在以下行:

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

我觉得我很亲近:

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

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

2 个答案:

答案 0 :(得分:1)

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

U.* sqrt(D)

逐个元素乘以UD的平方根。也就是说,(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