clear main

This commit is contained in:
2026-02-13 12:12:30 +01:00
parent 22db186237
commit 2096cff73c

View File

@ -1,74 +1,13 @@
mod analysis; mod analysis;
mod channel;
mod code; mod code;
mod construction; mod construction;
mod decoder; mod decoder;
mod encoder; mod encoder;
mod matrix; mod matrix;
mod simulation;
mod tanner; mod tanner;
use code::LdpcCode;
use construction::random::generate_random_h;
use decoder::bit_flip::BitFlipDecoder;
use encoder::dense::DenseEncoder;
fn main() { fn main() {
// TODO : Changer la logique pour trouver k => calculer n selon la longueur du message k (en simulation::run_simulation(6, 2, 4, 0.1);
// rapport des poids) n = (k * w_r) / (w_r - w_c)
println!("LDPC\n");
let n = 12;
let m = 6;
let wc = 2;
let wr = 4;
let mut h_matrix = generate_random_h(m, n, wc, wr);
println!("H aléatoire {m}x{n} :");
h_matrix.print();
let ldpc = LdpcCode::new(h_matrix.clone());
println!("\nLDPC instancié");
println!("Extraction de G");
let encoder = DenseEncoder::new(&ldpc);
println!("\n-> Matrcie H après Gauss-Jordan avec inversion de colonne de la forme [I | A]");
encoder.h_reduced.print();
println!("G {}x{}", encoder.k, encoder.n);
encoder.g_matrix.print();
let message = vec![1; encoder.k];
let codeword = encoder.encode(&message);
println!("\nMessage u : {:?}", message);
println!("\nCodeword s : {:?}", codeword);
let is_valid = (0..m).all(|r| {
let sum = codeword
.iter()
.enumerate()
.fold(0, |acc, (c, &bit)| acc ^ (bit & h_matrix.get(r, c)));
sum == 0
});
println!("\n{}", if is_valid { "Vrai" } else { "Faux" });
println!("\nCorrection (bit-flipping)");
let decoder = BitFlipDecoder::new(&ldpc);
let max_iter = 50;
let receiver_codeword = codeword.clone();
match decoder.decode(&receiver_codeword, max_iter) {
Some(corrected_codeword) => {
if corrected_codeword == codeword {
println!("Code reconstrui");
} else {
println!("Convergence mais mauvais codeword")
}
println!("Message original : {:?}", codeword);
println!("Message original : {:?}", corrected_codeword);
}
None => println!("Pas de convergence..."),
}
} }