MayaFlux 0.2.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ to_complex_vector()

Eigen::VectorXcd MayaFlux::Kakshya::EigenAccess::to_complex_vector ( ) const

Convert complex data to Eigen complex vector.

Returns
Complex vector (native Eigen representation)
Exceptions
std::invalid_argumentif not complex data

Definition at line 87 of file EigenAccess.cpp.

88{
89 if (!is_complex()) {
90 error<std::invalid_argument>(
93 std::source_location::current(),
94 "to_complex_vector() requires complex data, but variant contains {}",
95 type_name());
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 },
119 m_variant);
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.

References is_complex(), MayaFlux::Journal::Kakshya, m_variant, MayaFlux::Journal::Runtime, and type_name().

+ Here is the call graph for this function: