Convert complex data to magnitude vector.
61{
63 error<std::invalid_argument>(
66 std::source_location::current(),
67 "to_magnitude_vector() requires complex data, but variant contains {}",
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 },
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.