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ます。つまり、要素(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 は弱すぎて、これまたは同等の操作を行ったかどうかを知ることができません。

于 2012-08-24T16:34:28.287 に答える