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

◆ to_phase_vector()

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

Convert complex data to phase vector (angle in radians)

Returns
Vector of phases (∠z = atan2(imag, real))
Exceptions
std::invalid_argumentif not complex data

Definition at line 122 of file EigenAccess.cpp.

123{
124 if (!is_complex()) {
125 error<std::invalid_argument>(
128 std::source_location::current(),
129 "to_phase_vector() requires complex data, but variant contains {}",
130 type_name());
131 }
132
133 return std::visit([](const auto& vec) -> Eigen::VectorXd {
134 using T = typename std::decay_t<decltype(vec)>::value_type;
135
136 if constexpr (std::is_same_v<T, std::complex<float>> || std::is_same_v<T, std::complex<double>>) {
137 Eigen::VectorXd result(vec.size());
138 for (Eigen::Index i = 0; i < vec.size(); ++i) {
139 result(i) = std::arg(vec[i]); // atan2(imag, real)
140 }
141 return result;
142 } else {
143 return Eigen::VectorXd(0);
144 }
145 },
146 m_variant);
147}
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: