StageYann/Test.ipynb

5.3 KiB

None <html> <head> </head>
In [ ]:
#use "topfind";;
#require "jupyter.notebook";;
#require "lacaml.top";;
#require "alcotest";;
#require "str";;
#require "bigarray";;
#require "zarith";;
#require "getopt";;
open Lacaml.D
In [ ]:
let n_ao = 8;;
let n_mo = 6;; 
let ran=
Mat.random ~range:1. ~from:0. n_ao n_mo;;
In [ ]:
(* Extraction des colonnes i,j,k,... d'une matrice à partir d'une liste [i,j,k,...] *)

let toto = [1;2;3];;
(*
ran;;
let new_ran = Mat.transpose_copy ran ;;

let vec = Mat.to_col_vecs ran;;

vec.(0);;

let f a = vec.(a);;

let n = List.map f toto;;

let vec_list = [vec.(0);vec.(1)];;


let mat_n = Mat.of_col_vecs_list vec_list;;


let occ ran toto = 
    let new_ran = Mat.transpose_copy ran
    in
    let vec = Mat.to_col_vecs new_ran
    in 
    let f a = vec.(a+1)
    in 
    let vec_list = List.map f toto 
in Mat.of_col_vecs_list vec_list;;

occ ran toto;;



let list_a = [0;0;2;0;5];;

let new_list list= List.filter (fun x -> x > 0.) list;;

let vecto = Vec.init 8 (fun i -> if List.mem i toto
then 0.
else float_of_int(i) );;

let vecto_list = Vec.to_list vecto;;


new_list vecto_list;;
*)
(******************)
(*
ran;;
let vec_of_mat = Mat.to_col_vecs ran;;
let f a = vec_of_mat.(a-1);;
vec_of_mat.(5);;
let vec_list = List.map f toto;;
let new_m = Mat.of_col_vecs_list vec_list;;
*)

(* Fp *)
let miss_elem mat list = 
    let n_mo = Mat.dim2 mat
    in
    let vec = Vec.init (n_mo) (fun i ->
        if List.mem i list
            then 0.
            else float_of_int(i))
        in
        let vec_list  = Vec.to_list vec
        in
        let g a = int_of_float(a)
        in
        let vec_list_int = List.map g vec_list
    
    in
    List.filter (fun x -> x > 0) vec_list_int;;

let split_mat mat list =
    let vec_of_mat = Mat.to_col_vecs mat
    in
    let f a = vec_of_mat.(a-1)
    in
    let vec_list_1 = List.map f list
    in
    let list_2 = miss_elem mat list
    in
    let vec_list_2 = List.map f list_2
in (Mat.of_col_vecs_list vec_list_1,Mat.of_col_vecs_list vec_list_2);; 

let m_occ , m_vir = split_mat ran toto;;

(*
let miss_elem mat list = 
    let n_mo = Mat.dim2 mat
    in
    let vec = Vec.init (n_mo) (fun i ->
        if List.mem i list
            then 0.
            else float_of_int(i))
        in
        let vec_list  = Vec.to_list vec
        in
        let g a = int_of_float(a)
        in
        let vec_list_int = List.map g vec_list
    
    in
    List.filter (fun x -> x > 0) vec_list_int;;
*)    

 

(*let tata = miss_elem toto;;

let titi = [1.;2.]

let f a = int_of_float(a);;
let test list = List.map f list;;

test titi;;
*)
In [ ]:
let m_occ , m_vir = split_mat ran toto;;
In [ ]:
let nocc = n_mo / 2;;

(* Fonction de rassemblement de 2 matrices *)
let assemble = Mat.init_cols n_ao n_mo ( fun i j ->
    if j > nocc 
        then m_vir.{i,j-nocc}
        else m_occ.{i,j})
In [ ]:
let tutu = List.init nocc (fun i -> i)
In [ ]:

In [ ]:

</html>