将 cx_vec 元素转换为双复数犰狳 C++

cast cx_vec element to double complex armadillo c++

我有一个向量 cx_vec A(2);。我想选择第一个元素并得到它的参数。我在犰狳中没有找到执行此操作的功能,因此我尝试执行 arg( A.row(0) ) 但是 arg 期望 double complex。有什么方法可以将 cx_vec 来回转换为 double complex 类似于 arma::as_scalar 对于 double?

我试过投射但没用。

请注意我使用的是 #include <complex.h> 而不是 #include <complex> 因为我需要它的一些定义显然不在后者中(即 I)。

编辑:感谢 @kirbyfan64sos 我意识到使用 complex.h 不是一个好主意,但仍然无法将 arma::cx_vec 的元素从 std::complex<double>.

这应该可以解决问题:

arma::cx_vec A(2);

// ... fill A with stuff ...

double x = std::arg( A(0) );