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

◆ view_as_matrix()

template<typename Scalar >
auto MayaFlux::Kakshya::EigenAccess::view_as_matrix ( Eigen::Index  rows) const -> std::optional<Eigen::Map<const Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>>>

Get zero-copy matrix view with explicit row count.

Template Parameters
ScalarElement type (double or float)
Parameters
rowsNumber of rows in matrix interpretation
Returns
Optional Eigen::Map as rowsxcols matrix (row-major)

Returns std::nullopt if:

  • Type mismatch
  • Data size not divisible by rows
  • Data is empty

Example: vector<double> with 12 elements, rows=3 → 3x4 matrix

Definition at line 312 of file EigenAccess.hpp.

314{
315 return std::visit([rows](const auto& vec)
316 -> std::optional<Eigen::Map<const Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>>> {
317 using T = typename std::decay_t<decltype(vec)>::value_type;
318
319 if (vec.empty()) {
320 return std::nullopt;
321 }
322
323 if constexpr (std::is_same_v<T, Scalar>) {
324 if (vec.size() % rows != 0) {
325 return std::nullopt;
326 }
327
328 Eigen::Index cols = vec.size() / rows;
329 return Eigen::Map<const Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>>(
330 vec.data(), rows, cols);
331 }
332
333 return std::nullopt;
334 },
335 m_variant);
336}
const Kakshya::DataVariant & m_variant