Skip to content
Snippets Groups Projects
Select Git revision
  • f7c58667fac4288c93838e7a679c7316bb93e9e2
  • master default protected
  • py
  • rmevec
  • tffm
  • approx
  • v0.1.5
  • v0.1.4
  • v0.1.3
9 results

test_gen_gabmul_operator.m

Blame
  • test_gen_gabmul_operator.m 1.73 KiB
    clc; clear; close all;
    
    % Ce script permet de tester la fonction qui genere le multiplicateur de Gabor.
    % et de faire  des tests permettant de verifier  ses proprietes 
    %% 
    win_type='hann';
    approx_win_len=128;
    hop = approx_win_len/8;
    nbins = approx_win_len*2;
    sig_len=1024;
    fs=1;
    
    %% Les parametres du signal
    
    signal_params = generate_signal_parameters(fs, sig_len);
    dgt_params = generate_dgt_parameters(win_type, approx_win_len, hop, nbins, sig_len);
    
    [dgt, idgt] = get_stft_operators(dgt_params, signal_params);
    
    %% A ton adjoint_stft(direct_stft(x)) = x? c'est-a dire la propriete de tight frame ? 
    
    x =randn(sig_len,1);
    test = idgt(dgt(x));
    disp(norm(test-x,2)) 
    
    %% Le mask
    
    % dimension de la TFCT
    M = dgt_params.nbins/2 +1; 
    N = signal_params.sig_len/ dgt_params.hop; 
    
    T= duration;     
    
    
    t_lim = [0.3, 0.5];
    f_lim =[0.1, 0.2];
    
    mask = generate_rectangular_mask(nbins, hop, sig_len, t_lim, f_lim);
    figure; plotdgtreal(mask, dgt_params.hop, dgt_params.nbins,fs)
    
    %% Generation du multiplicateur et verification de la propit de symetrie
    
    mul1 = gen_gabmul_operator(dgt, idgt, mask);
    
    mask1 = conj(mask);
    mul2 = gen_gabmul_operator(dgt, idgt, mask1);
    
    disp(norm(mul1(x)-mul2(x))) %verifie la symetrie
    
    %% Si mask_id = I, a t-on mul1(x)=x ?;
    
    mask_id = zeros(M,N);
    mul_id = gen_gabmul_operator(dgt, idgt, mask_id);
    Mul = mul_id(x);
     
    disp(norm(Mul-x,2))
    
    
    %% diagonalisation : mul1 est-elle une matrice SDP ?
    
    [U,D] = eigs(mul1,signal_params.sig_len, signal_params.sig_len);
    
    %% SDP
    
    fprintf("test de positivite des valeus propres \n") 
    disp(diag(D)>=0);
    
    %% Verifier si U est bien unitaire