extractDiagonalToVector

C++ Function Reference

1 Signature

void BigDataStatMeth::DiagonalOps::extractDiagonalToVector(BigDataStatMeth::hdf5Dataset *dsMatrix, BigDataStatMeth::hdf5Dataset *dsVector)

2 Description

Extract diagonal from matrix and save as vector dataset.

3 Parameters

  • dsMatrix (BigDataStatMeth::hdf5Dataset *): Input matrix dataset (must be square N×N)
  • dsVector (BigDataStatMeth::hdf5Dataset *): Output vector dataset (will be created as 1×N)

4 Details

Extracts diagonal elements from a matrix and creates a new vector dataset. Uses existing getDiagonalfromMatrix() function for optimized diagonal reading. The result vector is stored in 1×N format for compatibility with vector operations.

5 Call Graph

Function dependencies

6 Source Code

File: inst/include/hdf5Utilities/hdf5DiagonalMethods.hppLines 139-164

inline void extractDiagonalToVector(BigDataStatMeth::hdf5Dataset* dsMatrix, 
                                            BigDataStatMeth::hdf5Dataset* dsVector)
        {
            try {
                if (dsMatrix->nrows() != dsMatrix->ncols()) {
                    Rf_error("extractDiagonalToVector: Matrix must be square");
                    return;
                }
                
                hsize_t matrix_size = dsMatrix->nrows();
                
                // Extract diagonal using existing function
                Rcpp::NumericVector diagonal = getDiagonalfromMatrix(dsMatrix);
                
                // Create vector dataset (1×N format)
                dsVector->createDataset(matrix_size, 1, "numeric");
                
                // Write diagonal data
                std::vector<double> diag_vector = Rcpp::as<std::vector<double>>(diagonal);
                std::vector<hsize_t> stride = {1, 1}, block = {1, 1};
                dsVector->writeDatasetBlock(diag_vector, {0, 0}, {1, matrix_size}, stride, block);
                
            } catch(std::exception& ex) {
                Rf_error("Error in extractDiagonalToVector: %s", ex.what());
            }
        }

7 Usage Example

#include "BigDataStatMeth.hpp"

// Example usage
auto result = extractDiagonalToVector(...);