0
複雑なマトリックスの選択機能:固有:私は<code>Eigen</code>で書きたい、このMathWorks社のMATLABコードを持って
[V_K,D_K] = eig(K);
d_k = diag(D_K);
ind_k = find(d_k > 1e-8);
d_k(ind_k) = d_k(ind_k).^(-1/2);
K_half = V_K*diag(d_k)*V_K';
これまでのところ、私が書いたコードは(最後の部分は、this例以下基づいています)されます:
Eigen::EigenSolver<Eigen::MatrixXf> es (K,true);
Eigen::MatrixXcf v = es.eigenvalues();
v = (v.array()).select(1/std::sqrt(v),v);
これは(最初にすべての、あなたはEigen::MatrixXcf
にstd::sqrt(v)
を適用することはできません)、明らかに間違っているが、私はそれを記述する方法を見つけ出すませんでした。手伝って頂けますか?
! 'unaryExpr'との違いを教えてください。 – justHelloWorld
各値に適用される独自の関数を書くことができます。通常は、利用可能な場合はEigens関数を使用する方が良いです。ベクトル化と式テンプレートが可能です。 –
説明をありがとう!あなたは[この](http://stackoverflow.com/questions/38327550/different-eigenvector-and-eigenvalues-in-eigen-and-matlab-could-generate-errors)の質問を見てくださいありますか? – justHelloWorld