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

delete

parent bd022f0f
Branches
Tags
No related merge requests found
clc; clear; close all;
%Algo 2
%%
pwd;
pathname ='solve_N_areas_cuicui';
if ~exist('solve_N_areas_cuicui','dir')
mkdir('solve_N_areas_cuicui');
end
addpath('solve_N_areas_cuicui')
%
%%
ind_loc = 5; % bird
ind_wd = 3; %car
deb_ind_loc = 0; % start for birdong
deb_ind_wd=0; % start for car
resampling_fs = 8000; % sampling frequency
sig_len = 16384; % siglen
%% DGT params - signals - mask
param_gauss = get_win_gauss_param(); % Gauss
win_len = param_gauss.win_len;
win_type = param_gauss.win_type;
alpha = param_gauss.alpha;
seuil = param_gauss.seuil;
radius = param_gauss.radius;
[signals, dgt_params, signal_params, mask, dgt,idgt] = get_mix(ind_loc, ...,
ind_wd, deb_ind_loc, deb_ind_wd, resampling_fs, sig_len,...,
win_len, win_type, alpha, seuil, radius);
[mask_area, mask_area_ratio] = get_mask_area(mask);
fprintf("We work with %s window of length %.f\n", win_type, win_len);
fprintf("Gabor transform parameters are: \n")
fprintf('hop :%2.f\n', dgt_params.hop);
fprintf('n_bins: %2.f\n', dgt_params.nbins);
fprintf("The parameters for smoothing the mask are: \n")
fprintf("alpha = %f\n", alpha);
fprintf("seuil = %f\n", seuil);
fprintf("radius = %f\n", radius);
figure; % window plot
plot_win(dgt_params.win, signal_params.fs, signal_params.sig_len, win_type)
title([num2str(win_type), ' - window']);
set(gca, 'FontSize', 20, 'fontName','Times');
saveas(gcf,fullfile(pathname, [num2str(win_type),'_window.png']));
% mask plot
figure('name','mask'); plot_spectrogram(mask, dgt_params,signal_params, dgt);
title(['mask : mask-area = ',num2str(mask_area)]);
set(gca, 'FontSize', 20, 'fontName','Times');
saveas(gcf,fullfile(pathname, 'gauss_mask.png'));
%% compute EVD decomposition
[mask_labels, mask_area_list] = make_subregions(mask, dgt_params, signal_params);
%%
[gabmul_list, mask_list] = get_P_gabmul(mask_labels, dgt, idgt);
%Halko params
tolerance_arrf = 1e-6;
proba_arrf = 1-1e-4;
x_mix = signals.mix; % mix
masks = mask_list;
% compute EVD usisng Halko
[t_arrf,t_evdn, t_ut_x, rank_q, s_vec_list, u_mat_list, ut_x_list, ...,
r] = compute_decomposition(x_mix, masks, gabmul_list, tolerance_arrf, proba_arrf);
%% Plot eigenvalues
figure;
for k=1:length(s_vec_list)
txt = ['Mask =' num2str(k)];
plot(s_vec_list{k},'LineWidth',3, 'DisplayName',txt);
hold on;
end
xlabel('$k$','Interpreter','latex');
ylabel('$\sigma[k]$','Interpreter','latex');
set(gca,'YScale','log');
grid;
legend show;
set(gca, 'FontSize', 20, 'fontName','Times');
saveas(gcf,fullfile(pathname, 'gabmul_eigenvalues.png'))
%%
x_engine = signals.target;
x_rec =@(lambda_vec) compute_estimate(lambda_vec, x_mix, s_vec_list, u_mat_list, ut_x_list);
obj_fun = @(lambda_vec) norm( x_engine - x_rec(lambda_vec));
sdr_engine = @(lambda_vec) sdr(x_engine, x_rec(lambda_vec));
%%
n_areas = length(s_vec_list);
tic;
lambda_vec_opt = fmincon(obj_fun, zeros(n_areas,1));
t1 = toc;
%%
fprintf('Running time to tune lambda: %f \n ',t1)
%% Results
tf_mat_mix = compute_dgt(signals.mix, dgt );
x_est = x_rec(lambda_vec_opt);
wav_write('x_opt.wav', x_est, signal_params.fs);
x_zero = x_rec(ones(n_areas,1));
x_interp= solver_tfgm_interp(tf_mat_mix, mask, idgt);
%% Compute SDR
sdr_opt = sdr(x_engine, x_est);
sdr_zero = sdr(x_engine, x_zero);
sdr_mix = sdr(x_engine, x_mix);
sdr_interp = sdr(x_engine, x_interp);
fprintf('Optimal SDR: %.f dB\n', sdr_opt);
fprintf('Zero filling SDR :%.f dB\n',sdr_zero)
fprintf('Mix SDR: %.1f dB\n',sdr_mix)
%%
fprintf('Optimal lambda: \n');
disp(lambda_vec_opt)
fprintf('Optimal SDR: :%.2e dB\n', sdr_opt);
fprintf('Zero filling SDR: %.2e dB\n',sdr_zero);
fprintf('Mix SDR: %.2e dB\n',sdr_mix);
fprintf('Interp + random phases filling SDR: %e dB\n',sdr_interp);
%%
figure;
plot(lambda_vec_opt,'LineWidth',2)
ylabel('\lambda^*_k')
xlabel('k')
set(gca,'YScale','log');
grid;
title(['Mix SDR= ', num2str(sdr_mix), 'dB']);
set(gca, 'FontSize', 20, 'fontName','Times');
saveas(gcf,fullfile(pathname, 'lambda_opt.pdf'))
%%
figure;
set(gcf,'position',[1, 1 550 950]);
subplot(321)
plot_spectrogram(signals.mix, dgt_params, signal_params, dgt);
title(['Mix SDR= ', num2str(sdr_mix), 'dB']);
set(gca, 'FontSize', 20, 'fontName','Times');
axis square;
subplot(322)
plot_spectrogram(signals.target, dgt_params, signal_params, dgt);
title('True source')
set(gca, 'FontSize', 20, 'fontName','Times');
axis square;
subplot(323)
plot_spectrogram(signals.noise, dgt_params, signal_params, dgt);
title('Perturbation')
set(gca, 'FontSize', 20, 'fontName','Times');
axis square;
subplot(324)
plot_spectrogram(x_zero, dgt_params, signal_params, dgt);
title(['Zero fill SDR=', num2str(sdr_zero),'dB'])
set(gca, 'FontSize', 20, 'fontName','Times');
axis square;
subplot(325)
plot_spectrogram(x_interp, dgt_params, signal_params, dgt);
title(['Interp SDR=', num2str(sdr_interp),'dB'])
set(gca, 'FontSize', 20, 'fontName','Times');
axis square;
subplot(326)
plot_spectrogram(x_est, dgt_params, signal_params, dgt);
title(['\lambda^* SDR= ',num2str(sdr_opt),'dB'])
set(gca, 'FontSize', 20, 'fontName','Times');
axis square;
saveas(gcf,fullfile(pathname, 'spectro_reconstruction.pdf'))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment