コードを MatLab から R に変換しようとしていますが、次の行で行き詰まっています。
SqO=U.* sqrt(D)*V'
私は近くにいるように感じます:
SqO<-Conj(t(U%*%sqrt(D)*V))
...しかし、出力はまだ一致していません。それが役立つ場合、すべての変数 (Sq0、U、D、および V) は 20x20 行列です。
HighPerformanceMark が書いたものから、翻訳は次のようになります。
SqO=U.* sqrt(D)*V' # Matlab
SqO <- U* sqrt(D) %*% t(V) # R
うーん、私は R の専門家ではありませんが、Matlab については少し知っています。Matlabでは、部分式
U.* sqrt(D)
U
と の平方根を要素ごとに乗算しD
ます。つまり、要素(i,j)
inは要素inU
で乗算されます。したがって、これは通常の行列乗算ではありません。それはあなたがすることですか? は、個々の要素、つまり にも作用します。(i,j)
sqrt(D)
U%*%sqrt(D)
sqrt(D)
sqrt(D)~=D^(1/2)*D^(1/2)
次に、Matlab コードは前の演算の結果にV
(ifV
が実数配列の場合) の転置を乗算します。繰り返しますが、私の R は弱すぎて、これまたは同等の操作を行ったかどうかを知ることができません。