Skip to content
Snippets Groups Projects
Commit 1a5662ba authored by Marina Kreme's avatar Marina Kreme
Browse files

some scripts for experiments

parent 50767176
No related branches found
No related tags found
No related merge requests found
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
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
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
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'));
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)
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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment