if (FALSE) {
library(BigDataStatMeth)
library(rhdf5)
library(RSpectra)
# Create a sample matrix (can be non-symmetric)
set.seed(123)
A <- matrix(rnorm(2500), 50, 50)
fn <- "test_eigen.hdf5"
bdCreate_hdf5_matrix_file(filename = fn, object = A, group = "data", dataset = "matrix")
# Compute eigendecomposition with BigDataStatMeth
res <- bdEigen_hdf5(fn, "data", "matrix", k = 6, which = "LM")
# Compare with RSpectra (should give same results)
rspectra_result <- eigs(A, k = 6, which = "LM")
# Extract results from HDF5
eigenvals_bd <- h5read(res$fn, res$values)
eigenvecs_bd <- h5read(res$fn, res$vectors)
# Compare eigenvalues (should be identical)
all.equal(eigenvals_bd, Re(rspectra_result$values), tolerance = 1e-12)
# For non-symmetric matrices, check imaginary parts
if (!is.null(res$values_imag)) {
eigenvals_imag <- h5read(res$fn, res$values_imag)
all.equal(eigenvals_imag, Im(rspectra_result$values), tolerance = 1e-12)
}
# Remove file
if (file.exists(fn)) {
file.remove(fn)
}
}
Run the code above in your browser using DataLab