2016-04-02 17 views
0

実数行列を複素行列に追加し、結果を別の複素行列に格納したいとします。アイゲンはこのような操作をサポートしていないようです。次のコードはコンパイル段階で失敗しました。このような機能を使用したい理由は、テンプレート関数では、1つの入力行列が実数または複素数であり、それに対処するための一様なコードが必要であるということです。なぜ、Eigenはそのような操作をサポートしていないのですか?Eigen C++の場合:複素行列と実行列を混合する

int main(){ 
    MatrixXd A(2,2); 
    MatrixXcd B(2,2); 
    A << -1, -2, -3, -4; 
    B.real() << 1, 2, 3, 4; 
    B.imag() << 5, 6, 7, 8; 

    MatrixXcd C(2, 2); 
    C = B + A; 

    return 0; 
} 

答えて

3

エラーメッセージをお読みください。これらは、データ型間にデフォルトのキャストがないことを認識するのに役立ちます。明示的std::complex<double>行列にdoubleマトリックスをキャストするためには次のように記述します。

C = B + A.cast<std::complex<double>>(); 
+0

本当にありがとうございました。私は前にそのような特徴を知らなかった。今、https://eigen.tuxfamily.org/dox/AsciiQuickReference.txtにあります。 – kevin

関連する問題