Convert complex data to Eigen complex vector.
88{
90 error<std::invalid_argument>(
93 std::source_location::current(),
94 "to_complex_vector() requires complex data, but variant contains {}",
96 }
97
98 return std::visit([](const auto& vec) -> Eigen::VectorXcd {
99 using T =
typename std::decay_t<
decltype(vec)>::value_type;
100
101 if constexpr (std::is_same_v<T, std::complex<float>>) {
102 Eigen::VectorXcd result(vec.size());
103 for (Eigen::Index i = 0; i < vec.size(); ++i) {
104 result(i) = std::complex<double>(
105 static_cast<double>(vec[i].real()),
106 static_cast<double>(vec[i].imag()));
107 }
108 return result;
109 } else if constexpr (std::is_same_v<T, std::complex<double>>) {
110 Eigen::VectorXcd result(vec.size());
111 for (Eigen::Index i = 0; i < vec.size(); ++i) {
112 result(i) = vec[i];
113 }
114 return result;
115 } else {
116 return Eigen::VectorXcd(0);
117 }
118 },
120}
bool is_complex() const
Check if data contains complex numbers.
std::string type_name() const
Get underlying data type name.
const Kakshya::DataVariant & m_variant
@ Runtime
General runtime operations (default fallback)
@ Kakshya
Containers[Signalsource, Stream, File], Regions, DataProcessors.