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
6 Source Code
NoteImplementation
File: inst/include/hdf5Utilities/hdf5DiagonalMethods.hpp • Lines 142-169
inline void extractDiagonalToVector(BigDataStatMeth::hdf5Dataset* dsMatrix,
BigDataStatMeth::hdf5Dataset* dsVector)
{
try {
if (dsMatrix->nrows() != dsMatrix->ncols()) {
throw std::runtime_error("extractDiagonalToVector: Matrix must be square");
}
hsize_t matrix_size = dsMatrix->nrows();
// Extract diagonal using existing function
Rcpp::NumericVector diagonal = getDiagonalfromMatrix(dsMatrix);
// Create vector dataset (1×N format)
dsVector->inheritCompressionLevel(dsMatrix->getCompressionLevel());
//.. 17/03/2026 ..// dsVector->createDataset(matrix_size, 1, "numeric");
dsVector->createDataset(1, matrix_size, "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};
//.. 17/03/2026 ..// dsVector->writeDatasetBlock(diag_vector, {0, 0}, {1, matrix_size}, stride, block);
dsVector->writeDatasetBlock(diag_vector, {0, 0}, {matrix_size, 1}, stride, block);
} catch(std::exception& ex) {
throw std::runtime_error(std::string("Error in extractDiagonalToVector: ") + ex.what());
}
}7 Usage Example
#include "BigDataStatMeth.hpp"
// Example usage
auto result = extractDiagonalToVector(...);