diff --git a/matlab/tfgm/experiments/get_experiment.m b/matlab/tfgm/experiments/get_experiment.m
new file mode 100644
index 0000000000000000000000000000000000000000..dbee5307abd08de5d962be005efd7860697b9b13
--- /dev/null
+++ b/matlab/tfgm/experiments/get_experiment.m
@@ -0,0 +1,42 @@
+function exp =  get_experiment(setting)
+%create experiment parameter
+
+
+switch setting
+    case 'full'
+        
+        param_pow = {0, 1, 2, 3, 4};
+        data_params = param_pow;
+        
+    case 'light'
+        
+        param_pow = {0,1,2};
+        data_params = param_pow;
+    otherwise
+        
+        error('Unknown setting: ')
+        
+end
+
+t_min = 0.3; t_max = 0.5; f_min = 0.1; f_max =0.2;
+t_val = {t_min, t_max};
+f_val={f_min, f_max};
+
+problem_params.win_type = 'hann';
+
+problem_params.t_val = t_val;
+problem_params.f_val = f_val;
+
+tolerance = 1e-6;
+r = 15;
+
+solver_params.tolerance = tolerance;
+solver_params.r = r;
+
+
+exp.data_params=data_params;
+exp.problem_params=problem_params;
+exp.solver_params=solver_params;
+end
+
+
diff --git a/matlab/tfgm/experiments/get_mask_area.m b/matlab/tfgm/experiments/get_mask_area.m
new file mode 100644
index 0000000000000000000000000000000000000000..f3701b9c08aafee0eb2eb566a6a43c144cd97d7e
--- /dev/null
+++ b/matlab/tfgm/experiments/get_mask_area.m
@@ -0,0 +1,10 @@
+function [mask_area, varargout] = get_mask_area(mask)
+%compute mask area
+
+mask_area = sum(mask(:));
+mask_area_ratio = mask_area/ (size(mask,1)*size(mask,2));
+ varargout{1} = mask_area_ratio;
+       
+end
+
+
diff --git a/matlab/tfgm/experiments/solver.m b/matlab/tfgm/experiments/solver.m
new file mode 100644
index 0000000000000000000000000000000000000000..98e0894c91037af90ff06f1060408f43284232fd
--- /dev/null
+++ b/matlab/tfgm/experiments/solver.m
@@ -0,0 +1,43 @@
+function [gab_mul, direct_stft, adjoint_stft, q_mat_arrf, arrf_time,....,
+    q_mat_rrf, rrf_time, svd_res_arrf,arrfevdn_time, svd_res_rrf,....,
+    rrfevdn_time, svd_res_eigs, eigs_time, eigs_norm, arrfevdn_norm, ...,
+    rrfevdn_norm,q_with] =solver(tolerance, r, mask, dgt_params, signal_params)
+
+[direct_stft, adjoint_stft] = get_stft_operators(dgt_params, signal_params);
+gab_mul = gen_gabmul_operator(direct_stft, adjoint_stft, mask);
+
+
+tic;
+q_mat_arrf = adaptative_randomized_range_finder(gab_mul ,signal_params.sig_len, tolerance, r);
+arrf_time = toc;
+
+
+tic;
+q_mat_rrf = randomized_range_finder(gab_mul, signal_params.sig_len, size(q_mat_arrf,2));
+rrf_time = toc;
+
+
+tic;
+svd_res_arrf = EVD_nystrom(gab_mul, q_mat_arrf);
+arrfevdn_time=  toc;
+
+tic;
+svd_res_rrf = EVD_nystrom(gab_mul, q_mat_rrf);
+rrfevdn_time=  toc;
+
+
+tic;
+svd_res_eigs = EVD_eigs(gab_mul, signal_params.sig_len, size(q_mat_arrf,2) );
+eigs_time = toc;
+
+
+
+eigs_norm =  error_operator_norm(gab_mul, svd_res_eigs);
+arrfevdn_norm =  error_operator_norm(gab_mul, svd_res_arrf);
+rrfevdn_norm = error_operator_norm(gab_mul, svd_res_rrf);
+
+
+q_with = size(q_mat_arrf,2);
+
+
+end
\ No newline at end of file
diff --git a/matlab/tfgm/experiments/step_mask.m b/matlab/tfgm/experiments/step_mask.m
new file mode 100644
index 0000000000000000000000000000000000000000..df1cd14b19370a935bc097e29c92d6a229a2ac7d
--- /dev/null
+++ b/matlab/tfgm/experiments/step_mask.m
@@ -0,0 +1,84 @@
+clc ; clear; close all;
+%%
+
+pwd;
+pathname ='figures_JSTSP';
+if ~exist('figures_JSTSP','dir')
+    mkdir('figures_JSTSP');
+end
+addpath('figures_JSTSP')
+
+%%
+ind_loc = 5;
+ind_wd = 3;
+deb_ind_loc = 0;
+deb_ind_wd=0;
+resampling_fs = 8000;
+sig_len = 16384;
+%%
+
+
+param_gauss = get_win_gauss_param();
+
+
+win_len = param_gauss.win_len;
+win_type = param_gauss.win_type;
+alpha = param_gauss.alpha;
+seuil = param_gauss.seuil;
+radius = param_gauss.radius;
+
+%% 
+sig_loc = load_localized_signal(ind_loc, resampling_fs,  sig_len, deb_ind_loc);
+sig_wd = load_wideband_signal(ind_wd, resampling_fs,  sig_len, deb_ind_wd);
+
+signals = generate_mix_signal(sig_wd, sig_loc);
+
+fs = resampling_fs;
+sig_len = length(sig_loc);
+signal_params = generate_signal_parameters(fs, sig_len);
+
+%%  dgt
+dgt_params = generate_dgt_parameters(win_type, win_len);
+dgt_params.hop = 32; %
+dgt_params.nbins = 512;%
+[dgt, idgt] = get_stft_operators(dgt_params, signal_params);
+
+
+  tf_mat_wb = compute_dgt(signals.target, dgt );
+    tf_mat_loc = compute_dgt(signals.noise, dgt );
+
+
+%% Etape 1
+figure;
+subplot(131)
+set(gcf,'position',[1, 1, 1000 400]);
+mask = and(abs(tf_mat_wb)<alpha*abs(tf_mat_loc), abs(tf_mat_loc)>seuil);
+%figure('name','mask'); 
+plot_spectrogram(mask, dgt_params,signal_params, dgt );
+axis square;
+set(gca, 'FontSize', 20, 'fontName','Times');
+%saveas(gcf,fullfile(pathname, 'mask_cuicui_gauss_1.png'));
+
+
+%Etape 2
+
+se = strel('disk',radius);
+
+mask = imclose(mask,se);
+%figure('name','mask');
+subplot(132)
+plot_spectrogram(mask, dgt_params,signal_params, dgt );
+set(gca, 'FontSize', 20, 'fontName','Times');
+axis square;
+%saveas(gcf,fullfile(pathname, 'mask_cuicui_gauss_2.png'));
+
+
+subplot(133)
+mask = imopen(mask,se);
+%figure('name','mask');
+plot_spectrogram(mask, dgt_params,signal_params, dgt );
+set(gca, 'FontSize', 20, 'fontName','Times');
+axis square;
+%saveas(gcf,fullfile(pathname, 'mask_cuicui_gauss_3.png'));
+saveas(gcf,fullfile(pathname, 'mask_step.png'));
+
diff --git a/matlab/tfgm/experiments/test_gen_gabmul_operator.m b/matlab/tfgm/experiments/test_gen_gabmul_operator.m
new file mode 100644
index 0000000000000000000000000000000000000000..b3db5fa33e76f7d581ad5c34dd59b63d89ca954d
--- /dev/null
+++ b/matlab/tfgm/experiments/test_gen_gabmul_operator.m
@@ -0,0 +1,27 @@
+clc; clear; close all;
+%%
+setting='full';
+exp =  get_experiment(setting);
+param  = exp.data_params;
+t_lim = [exp.problem_params.t_val{1}, exp.problem_params.t_val{2}];
+f_lim = [exp.problem_params.f_val{1}, exp.problem_params.f_val{2}];
+win_type = exp.problem_params.win_type;
+
+%%
+param_pow = param{4};
+ problem_data = get_problem_data(param_pow,t_lim, f_lim, win_type);
+ 
+ %%
+ dgt_params = problem_data.dgt_params;
+signal_params = problem_data.signal_params;
+mask = problem_data.mask;
+[direct_stft, adjoint_stft] = get_stft_operators(dgt_params, signal_params);
+gab_mul = gen_gabmul_operator(direct_stft, adjoint_stft, mask);
+
+%% 
+figure; imagesc(mask)
+x = randn(signal_params.sig_len,1);
+A = gab_mul(x);
+figure; plot(x);
+figure; plot(A);
+figure; sgram(A,'dynrange',90)
diff --git a/matlab/tfgm/experiments/test_get_problem_data.m b/matlab/tfgm/experiments/test_get_problem_data.m
new file mode 100644
index 0000000000000000000000000000000000000000..eb97a828cd04200b11ee15c0326f53cd37e0ca2a
--- /dev/null
+++ b/matlab/tfgm/experiments/test_get_problem_data.m
@@ -0,0 +1,22 @@
+clc; close all; 
+
+%%
+setting='full';
+exp =  get_experiment(setting);
+
+%%
+param  = exp.data_params;
+t_lim = [exp.problem_params.t_val{1}, exp.problem_params.t_val{2}];
+f_lim = [exp.problem_params.f_val{1}, exp.problem_params.f_val{2}];
+win_type = exp.problem_params.win_type;
+
+%%
+figure;
+for k = 1:length(param)
+    param_pow = param{k};
+ problem_data = get_problem_data(param_pow,t_lim, f_lim, win_type); 
+
+ figure(k); 
+ plot_mask(problem_data.mask, problem_data.hop, problem_data.dgt_params.nbins, problem_data.signal_params.fs)
+
+end
\ No newline at end of file