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

unnecessary file deletion

parent 5b15577c
No related branches found
No related tags found
No related merge requests found
clc; clear; close all;
% Algo 1
%%
pwd;
pathname ='solve_1area_cuicui';
if ~exist('solve_1area_cuicui','dir')
mkdir('solve_1area_cuicui');
end
addpath('solve_1area_cuicui')
%%
fs = 8000; % sampling frequency
sig_len = 16384; % siglen
%% DGT params - signals - mask
close all
win_len = 512;
win_type = 'hann';
params = get_params(win_len, win_type);%Gauss
win_len = params.win_len;
win_type = params.win_type;
hop = params.hop;
nbins = params.nbins;
wideband_src = 'car';
loc_source='modulations';
win_dur=win_len/8000;
hop_ratio=1/8;
nbins_ratio = 2;
[alpha, seuil, radius] = set_smooth_mask_params(wideband_src, loc_source, win_type);
gamma=0.7;
fig_dir = pathname;
[signals, dgt_params, signal_params, mask, mask_area, dgt,...,
idgt] = get_mix(loc_source, wideband_src, gamma, win_dur, hop_ratio,...,
nbins_ratio, win_type, alpha, seuil, radius, fig_dir);
%%
[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']));
%% plot mask
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'));
%%
mask_bool = mask;
tol_subregions = 0;
[mask_labeled, n_areas,t_subregions] = get_nareas(mask_bool,dgt, idgt, dgt_params,...,
signal_params, fig_dir,tol_subregions);
[gabmul_list, mask_list] = get_P_gabmul(mask_labeled, dgt, idgt);
x_mix = signals.mix;
tolerance_arrf = 1e-3;
proba_arrf = 1 - 1e-4;
[t_arrf,t_evdn, t_ut_x, rank_q, s_vec_list, u_mat_list,...,
ut_x_list,r] = compute_decomposition(x_mix, mask_list, gabmul_list,...,
tolerance_arrf, proba_arrf);
%% plot mask
figure('name','mask');
plot_mask(mask, dgt_params.hop,dgt_params.nbins, signal_params.fs);
title(['mask : mask-area = ',num2str(mask_area)]);
set(gca, 'FontSize', 20, 'fontName','Times');
saveas(gcf,fullfile(fig_dir, 'mask.pdf'));
%% Plot eigenvalues
figure;
for k_area=1:n_areas
txt = ['sub-region =' num2str(k_area)];
plot(s_vec_list{k_area},'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', 25, 'fontName','Times');
xlabel('$k$','Interpreter','latex');
set(gca, 'FontSize', 25, 'fontName','Times');
saveas(gcf,fullfile(fig_dir, 'gabmul_eigenvalues.pdf'));
%% find optimal lambda (best SDR)
x_wideband = signals.wideband;
x_rec = @(lambda_coef)compute_estimate(lambda_coef, x_mix, s_vec_list,...,
u_mat_list, ut_x_list);
[lambda_oracle, t_oracle] = compute_lambda_oracle_sdr(n_areas,x_wideband, x_rec);
fprintf("Running time to tune lambda (oracle): %f \n",t_oracle);
%% Estimate energy and lambda
[lambda_est, t_est] = compute_lambda(x_mix, mask_labeled, dgt_params,...,
signal_params, dgt,s_vec_list, u_mat_list, ut_x_list,...,
gabmul_list,fig_dir);
fprintf("Running time to tune lambda (est): %f \n",t_est);
%% Estimate lambda from true energy
e_wideband_true_energy = zeros(n_areas,1);
x_wideband_tf_mat = dgt(gabmul_list{1}(signals.wideband));
for k_area =1:n_areas
mask_k = (mask_labeled==k_area);
x_wideband_tf_masked = mask_k .* x_wideband_tf_mat;
e_wideband_true_energy(k_area) =norm(x_wideband_tf_masked, 'fro').^2;
end
e_wideband = e_wideband_true_energy;
[lambda_true_energy, t_true_energy] = compute_lambda(x_mix, mask_labeled, dgt_params,...,
signal_params, dgt, s_vec_list, u_mat_list, ut_x_list,...,
gabmul_list, fig_dir,e_wideband);
fprintf("Running time to tune lambda (True): %f \n",t_true_energy);
%% Results
x_wideband = signals.wideband;
sdr_wideband = @(lambda_coef)sdr(x_wideband, x_rec(lambda_coef));
sdr_wideband_1area = @(lambda_coef)sdr_engine_1area(lambda_coef, signals, k_area,...,
n_areas,s_vec_list, u_mat_list, ut_x_list);
is_wideband = @(lambda_coef) itakura_saito_dist_spectrum(x_wideband, x_rec(lambda_coef));
%%
l_range = 10.^linspace(-10,10,100);
sdr_wideband_l = zeros(length(l_range),1);
sdr_engine1area_l = zeros(length(l_range),1);
if tol_subregions==0
for k =1:length(l_range)
sdr_wideband_l(k) = sdr_wideband(l_range(k));
end
figure;
plot(l_range,sdr_wideband_l, '-','LineWidth',3);
hold on;
plot(lambda_oracle,sdr_wideband(lambda_oracle),'gs','MarkerSize',12);
plot(lambda_est,sdr_wideband(lambda_est),'o','MarkerSize',12)
plot(lambda_true_energy,sdr_wideband(lambda_true_energy),'*','MarkerSize',12)
plot(1,sdr_wideband(1),'o','MarkerSize',12)
else
figure;
for k_area =1: n_areas
for k=1:length(l_range)
sdr_engine1area_l(k) = sdr_engine_1area(k, k_area);
end
txt = ['SDR sub-reg =' num2str(k)];
end
plot(l_range, sdr_engine1area_l,'_','LineWidth',3,'DisplayName',txt)
for k_area =1:n_areas
txt1 = ['TFF-O ',num2str(k_area)];
plot(lambda_oracle(k_area), sdr_engine_1area(lambda_oracle(k_area), k_area),...,
'*','LineWidth',3,'DisplayName',txt1);
txt2 = ['TFF-P',num2str(k_area)];
plot(lambda_est(k_area),sdr_engine_1area(lambda_est(k_area), k_area),...,
'o','LineWidth',3,'DisplayName',txt2);
txt3 = ['TFF-E',num2str(k_area)];
plot(lambda_true_energy(k_area),sdr_engine_1area(lambda_true_energy(k_area), k_area),...,
'o','LineWidth',3,'DisplayName',txt3);
txt4 = ['Zero fill',num2str(k_area)];
plot(1, sdr_engine_1area(1, k_area), 'o','LineWidth',3,'DisplayName',txt4);
end
end
xlabel('$\lambda$','Interpreter','latex')
ylabel('SDR(dB)')
set(gca,'XScale','log');
grid on;
set(gca, 'FontSize', 20, 'fontName','Times');
legend('SDR', 'TFF-O','TFF-1', 'TFF-E','Zero fill')
saveas(gcf,fullfile(fig_dir, 'tuning_lambda.pdf'));
%%
is_wideband_l = zeros(length(l_range),1);
if tol_subregions ==0
figure;
for l =1: length(l_range)
is_wideband_l(l) = is_wideband(l_range(l));
end
plot(l_range, is_wideband_l,'-','LineWidth',3)
plot(lambda_oracle, is_wideband(lambda_oracle), 'o','LineWidth',3)
plot(lambda_est, is_wideband(lambda_est), 'o')
plot(lambda_true_energy, is_wideband(lambda_true_energy),'o','LineWidth',3)
plot(1, is_wideband(1), 'o','LineWidth',3)
xlabel('$\lambda$','Interpreter','latex')
ylabel('IS (dB)')
set(gca,'XScale','log');
grid()
legend('SDR','TFF-O','TFF-1','TFF-E','Zero fill')
axis tight;
saveas(gcf,fullfile(fig_dir, 'tuning_lambda_IS.pdf'));
%%
figure;
yyaxis left;
plot(l_range, sdr_wideband_l, '-','LineWidth',3); hold on;
plot(lambda_est, sdr_wideband(lambda_est), 'o','MarkerSize',3,'LineWidth',3)
plot(lambda_true_energy, sdr_wideband(lambda_true_energy), 'bo','LineWidth',3)
plot(lambda_oracle, sdr_wideband(lambda_oracle), 'go','LineWidth',3)
plot(1, sdr_wideband(1), 'mo','LineWidth',3);
grid on;
xlabel('$\lambda$','Interpreter','latex')
ylabel('SDR (dB)')
set(gca,'XScale','log');
yyaxis right;
plot(l_range,is_wideband_l,'-','LineWidth',3); hold on;
plot(lambda_est, is_wideband(lambda_est), 'o','MarkerSize',3,'LineWidth',3)
plot(lambda_true_energy, is_wideband(lambda_true_energy),'bo','LineWidth',3)
plot(lambda_oracle, is_wideband(lambda_oracle), 'go','LineWidth',3)
plot(1, is_wideband(1), 'mo','LineWidth',3)
axis tight;
legend('SDR','TFF-1','TFF-E','TFF-O','Zero fill','Location','northwest');
xlabel('$\lambda$','Interpreter','latex')
ylabel('IS divergence')
set(gca, 'FontSize', 20, 'fontName','Times');
%
% saveas(gcf,fullfile(fig_dir, 'tuning_lambda_SDR_IS.pdf'));
%
end
%% Reconstructec signals
tf_mat_mix = compute_dgt(signals.mix, dgt );
x_oracle = x_rec(lambda_oracle);
wav_write('x_oracle.wav', x_oracle, signal_params.fs);
x_est = x_rec(lambda_est);
wav_write('x_est.wav', x_est, signal_params.fs);
x_true_energy = x_rec(lambda_true_energy);
wav_write('x_true_energy.wav', x_true_energy, signal_params.fs);
x_zero = solver_tfgm_zero(tf_mat_mix, mask, idgt);
wav_write('x_zero_fill.wav', x_zero, signal_params.fs);
x_interp= solver_tfgm_interp(tf_mat_mix, mask, idgt);
wav_write('x_interp.wav', x_zero, signal_params.fs);
%% Sdr
sdr_oracle = sdr(x_wideband, x_oracle);
sdr_est = sdr(x_wideband, x_est);
sdr_true_energy = sdr(x_wideband, x_true_energy);
sdr_zero = sdr(x_wideband, x_zero);
sdr_interp = sdr(x_wideband, x_interp);
sdr_mix = sdr(x_wideband, x_mix);
%% Itakura saito
is_oracle = itakura_saito_dist_spectrum(x_wideband,x_oracle);
is_est = itakura_saito_dist_spectrum(x_wideband,x_est);
is_true_energy = itakura_saito_dist_spectrum(x_wideband,x_true_energy);
is_zero = itakura_saito_dist_spectrum(x_wideband,x_zero) ;
is_mix= itakura_saito_dist_spectrum(x_wideband,x_mix) ;
is_interp= itakura_saito_dist_spectrum(x_wideband,x_interp);
%%
fprintf('Oracle lambda: %f\n', lambda_oracle);
fprintf('SDR for oracle lambda: %f dB\n',sdr_oracle);
fprintf('Estimated lambda: %f \n', lambda_est);
fprintf('SDR for estimated lambda: %f dB\n', sdr_est);
fprintf('True-energy lambda: %f \n', lambda_true_energy);
fprintf('SDR for true-energy lambda: %f dB\n', sdr_true_energy);
fprintf('Zero filling SDR: %f dB\n', sdr_zero);
fprintf('Mix SDR: %f dB \n',sdr_mix);
fprintf('Interp + random phases filling SDR: %e dB\n',sdr_interp);
%%
figure;
plot_spectrogram(x_mix, dgt_params, signal_params, dgt);
title(['Mix SDR=' , num2str(sdr_mix,4),'dB ','IS= ',num2str(is_mix)]);
set(gca, 'FontSize', 20, 'fontName','Times');
axis tight;
saveas(gcf,fullfile(fig_dir, 'mix.pdf'));
figure;
plot_spectrogram(signals.wideband, dgt_params, signal_params, dgt);
title(['True source -', wideband_src])
set(gca, 'FontSize', 20, 'fontName','Times');
saveas(gcf,fullfile(fig_dir, 'spectrogram_true_wb_source.pdf'));
figure;
plot_spectrogram(x_zero, dgt_params, signal_params, dgt)
title(['Zero fill SDR= ', num2str(sdr_zero,4),'dB ', 'IS=', num2str(is_zero)])
set(gca, 'FontSize', 20, 'fontName','Times');
saveas(gcf,fullfile(fig_dir, 'spectrogram_zero_fill.pdf'));
figure;
plot_spectrogram(x_oracle, dgt_params, signal_params, dgt)
title(['TFF-O SDR= ', num2str(sdr_oracle,4), 'dB ','IS=', num2str(is_oracle)])
set(gca, 'FontSize', 20, 'fontName','Times');
axis tight;
saveas(gcf,fullfile(fig_dir,'spectrogram_TFF-O.pdf'));
figure;
plot_spectrogram(x_est, dgt_params, signal_params, dgt)
if tol_subregions==0
title(['TFF-1 - SDR= ',num2str(sdr_est,4),'dB ','IS=',num2str(is_est)])
set(gca, 'FontSize', 20, 'fontName','Times');
axis tight;
saveas(gcf,fullfile(fig_dir, 'spectrogram_TFF-1.pdf'));
else
title(['TFF-P - SDR= ',num2str(sdr_est,4),'dB ','IS=',num2str(is_est)])
set(gca, 'FontSize', 20, 'fontName','Times');
axis tight;
saveas(gcf,fullfile(fig_dir, 'spectrogram_TFF-P.pdf'));
end
figure;
plot_spectrogram(x_true_energy, dgt_params, signal_params,dgt)
title(['TFF-E SDR= ', num2str(sdr_true_energy,4),'dB ','IS=',num2str(is_true_energy) ])
set(gca, 'FontSize', 20, 'fontName','Times');
saveas(gcf,fullfile(fig_dir, 'spectrogram_TFF-E.pdf'));
%%
figure;
plot_spectrogram(x_interp, dgt_params, signal_params,dgt)
title(['Interp SDR= ', num2str(sdr_interp,4),'dB ','IS=',num2str(is_interp)])
set(gca, 'FontSize', 20, 'fontName','Times');
saveas(gcf,fullfile(fig_dir,'spectrogram_interp.pdf'));
%%
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment