working BAD

This commit is contained in:
2026-02-13 12:28:50 +01:00
parent 2096cff73c
commit f4201536de
3 changed files with 21 additions and 11 deletions

View File

@ -41,13 +41,22 @@ pub fn generate_random_h_for_k(k: usize, wc: usize, wr: usize) -> MatrixGF2 {
let n = (k * wr) / (wr - wc); let n = (k * wr) / (wr - wc);
let m = n - k; let m = n - k;
// On garde que les matrice de rang m let max_attemps = 50;
loop { let mut best_h = generate_random_h(m, n, wc, wr);
let h_matrix = generate_random_h(m, n, wc, wr); let mut max_rank = 0;
let mut h_test = h_matrix.clone();
// On garde que les matrice de rang max
for _ in 0..max_attemps {
let h_cand = generate_random_h(m, n, wc, wr);
let mut h_test = h_cand.clone();
let (rank, _) = h_test.gauss_jordan_swap_cols(); let (rank, _) = h_test.gauss_jordan_swap_cols();
if rank == m { if rank == m {
return h_matrix; return h_cand;
}
if rank > max_rank {
max_rank = rank;
best_h = h_cand;
} }
} }
best_h
} }

View File

@ -9,5 +9,5 @@ mod simulation;
mod tanner; mod tanner;
fn main() { fn main() {
simulation::run_simulation(6, 2, 4, 0.1); simulation::run_simulation(8, 2, 4, 0.1);
} }

View File

@ -10,7 +10,7 @@ use rand::{Rng, RngExt};
pub fn run_simulation(k: usize, wc: usize, wr: usize, error_prob: f64) { pub fn run_simulation(k: usize, wc: usize, wr: usize, error_prob: f64) {
println!( println!(
"Simulation LDPC : k = {} bits, wc = {}, wr = {}, p = {:.2}", "\nSimulation LDPC : k = {} bits, wc = {}, wr = {}, p = {:.2}",
k, wc, wr, error_prob k, wc, wr, error_prob
); );
@ -21,12 +21,13 @@ pub fn run_simulation(k: usize, wc: usize, wr: usize, error_prob: f64) {
let encoder = DenseEncoder::new(&ldpc); let encoder = DenseEncoder::new(&ldpc);
if encoder.k != k { let k = encoder.k;
println!("Erreur: la matrice donne k = {} != {}", encoder.k, k); // if encoder.k != k {
} // println!("Erreur: la matrice donne k = {} != {}", encoder.k, k);
// }
println!( println!(
" -> Code généré : n = {}, k = {}, k/n = {}", " -> Code généré : n = {}, k = {}, k/n = {:.2}",
encoder.n, encoder.n,
encoder.k, encoder.k,
(encoder.k as f64 / encoder.n as f64) (encoder.k as f64 / encoder.n as f64)