From 1c7daec95759171e69d82f868f4bcf411cf6263e Mon Sep 17 00:00:00 2001 From: zeefaad Date: Thu, 12 Feb 2026 12:32:46 +0100 Subject: [PATCH] generer H avec k --- Code/ldpc/src/construction/random.rs | 18 ++++++++++++++++++ Code/ldpc/src/encoder/dense.rs | 1 + 2 files changed, 19 insertions(+) diff --git a/Code/ldpc/src/construction/random.rs b/Code/ldpc/src/construction/random.rs index 70841e3..88139c5 100644 --- a/Code/ldpc/src/construction/random.rs +++ b/Code/ldpc/src/construction/random.rs @@ -33,3 +33,21 @@ pub fn generate_random_h(rows: usize, cols: usize, wc: usize, wr: usize) -> Matr } } } + +pub fn generate_random_h_for_k(k: usize, wc: usize, wr: usize) -> MatrixGF2 { + assert!(wr > wc, "wr < wc ..."); + assert!((k * wr) % (wr - wc) == 0, "Colonnes non entieres"); + + let n = (k * wr) / (wr - wc); + let m = n - k; + + // On garde que les matrice de rang m + loop { + let h_matrix = generate_random_h(m, n, wc, wr); + let mut h_test = h_matrix.clone(); + let (rank, _) = h_test.gauss_jordan_swap_cols(); + if rank == m { + return h_matrix; + } + } +} diff --git a/Code/ldpc/src/encoder/dense.rs b/Code/ldpc/src/encoder/dense.rs index c04920e..3c35792 100644 --- a/Code/ldpc/src/encoder/dense.rs +++ b/Code/ldpc/src/encoder/dense.rs @@ -41,6 +41,7 @@ impl DenseEncoder { // let mut codeword = vec![0; self.n]; // s = u * G + // for c in 0..self.n { // let mut sum = 0; // for r in 0..self.k {