generer H avec k
This commit is contained in:
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -41,6 +41,7 @@ impl DenseEncoder {
|
|||||||
// let mut codeword = vec![0; self.n];
|
// let mut codeword = vec![0; self.n];
|
||||||
|
|
||||||
// s = u * G
|
// s = u * G
|
||||||
|
|
||||||
// for c in 0..self.n {
|
// for c in 0..self.n {
|
||||||
// let mut sum = 0;
|
// let mut sum = 0;
|
||||||
// for r in 0..self.k {
|
// for r in 0..self.k {
|
||||||
|
|||||||
Reference in New Issue
Block a user