2012-08-24 45 views
0

我試着翻譯從MATLAB代碼爲R,但是我卡在下面一行:翻譯MATLAB中的R - 陣列乘法和複共軛轉

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

我覺得我關閉:

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

...但輸出仍然不匹配。如果有幫助,所有變量(Sq0,U,D和V)都是20x20矩陣。

回答

1

嗯,我不是R的專家,但我確實知道一些Matlab。在Matlab中的子表達式

U.* sqrt(D) 

確實的U的元件逐個元素乘法和D平方根。也就是說,U中的元素(i,j)乘以sqrt(D)中的元素(i,j);所以這不是通常的矩陣乘法。這是你的U%*%sqrt(D)嗎? sqrt(D)也對單個元素進行操作,即sqrt(D)~=D^(1/2)*D^(1/2)

然後,Matlab代碼將前一次操作的結果乘以V的轉置(如果V是真實數組)。再次,我的R太弱,無法知道你是否已經完成了這項工作或者進行了相同的操作。

+0

在該R'%*%'是矩陣乘法,而'*'是元素逐個元素相乘,所以用你的Matlab的定義(也許)它應該是'U * sqrt(D)%*%t(V)',但是你沒有給出足夠的背景知道複共軛如何進入。 –

+0

我根本沒有給出複共軛的任何背景。 –

+0

對。無法分辨'U'之後的右邊點是否具有一些數學意義。 –

1

從什麼HighPerformanceMark寫的翻譯應該是:

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

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