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

◆ to_magnitude_vector()

Eigen::VectorXd MayaFlux::Kakshya::EigenAccess::to_magnitude_vector ( ) const

Convert complex data to magnitude vector.

Returns
Vector of magnitudes (|z| = √(real² + imag²))
Exceptions
std::invalid_argumentif not complex data

Definition at line 60 of file EigenAccess.cpp.

61{
62 if (!is_complex()) {
63 error<std::invalid_argument>(
66 std::source_location::current(),
67 "to_magnitude_vector() requires complex data, but variant contains {}",
68 type_name());
69 }
70
71 return std::visit([](const auto& vec) -> Eigen::VectorXd {
72 using T = typename std::decay_t<decltype(vec)>::value_type;
73
74 if constexpr (std::is_same_v<T, std::complex<float>> || std::is_same_v<T, std::complex<double>>) {
75 Eigen::VectorXd result(vec.size());
76 for (Eigen::Index i = 0; i < vec.size(); ++i) {
77 result(i) = std::abs(vec[i]);
78 }
79 return result;
80 } else {
81 return Eigen::VectorXd(0);
82 }
83 },
84 m_variant);
85}
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: