Creates a diagonal matrix or vector directly in an HDF5 file using block-wise processing to minimize memory usage. This unified function replaces separate diagonal and identity matrix creation functions, providing flexible diagonal creation with automatic parameter detection.
Integer. Size of diagonal (auto-detected if diagonal_values provided)
scalar
Numeric. Scalar multiplier for diagonal elements (default: 1.0)
diagonal_values
Numeric vector. Custom diagonal values (optional)
output_type
Character. Output format: “matrix” or “vector” (default: “matrix”)
block_size
Integer. Block size for processing (default: auto-estimate)
compression
Integer. Compression level 0-9 (default: 6)
overwriteFile
Logical. Overwrite file if exists (default: FALSE)
overwriteDataset
Logical. Overwrite dataset if exists (default: FALSE)
threads
Integer. Number of threads to use (default: auto-detect)
4 Value
List with components:
fn: Character string with the HDF5 filename
ds: Character string with the full dataset path to the diagonal matrix (group/dataset)
5 Details
This function provides flexible diagonal creation with two main modes: - Vector mode: Provide custom diagonal values - Size is automatically detected from vector length - Scalar acts as additional multiplier - Ideal for custom diagonal patterns - Scalar mode: Provide size and scalar value
- Creates uniform diagonal with specified scalar - scalar=1.0 creates identity matrix/vector - Ideal for identity or uniform diagonal matrices - Output formats: - “matrix”: Creates full N×N matrix (sparse, only diagonal populated) - “vector”: Creates efficient 1×N vector with diagonal values only - Performance features: - Block-wise processing for memory efficiency - Optional compression with configurable levels - Parallel processing support for large datasets - Automatic block size optimization