MPI plotting stuff

This commit is contained in:
Silas Oettinghaus
2026-07-15 23:02:05 +02:00
parent 9455084711
commit 2e667d6ec3
7 changed files with 707 additions and 33 deletions

View File

@@ -15,12 +15,13 @@ end
%% Execution toggles
run_conventional_ffe = 0;
run_hpf = 1;
run_a2_tracked_levels = 0;
run_a2_residual = 0;
run_a1 = 0;
run_tracking_adaptive = 0;
run_conventional_ffe = 1;
run_ma = 0;
run_hpf = 0;
run_a2_tracked_levels = 1;
run_a2_residual = 1;
run_a1 = 1;
run_tracking_adaptive = 1;
plot_output_signals = 0;
%% Shared fixed EQ settings
@@ -75,12 +76,68 @@ if run_conventional_ffe
"plain_ffe", "baseline", block_update);
output.(char(storageName)) = ffe_results;
eq_noise_ffe = equalized_signal - Symbols;
if plot_output_signals
plotEqSignals(equalized_signal,Symbols,options,400,-1);
end
end
%% Conventional FFE
%% Moving Average Filter -> Conventional FFE
if run_ma
eq_ffe = FFE_plain( ...
"sps", eq_sps, ...
"order", eq_order, ...
"decide", false, ...
"adaption_technique", eq_adaption, ...
"len_tr", eq_len_tr, ...
"epochs_tr", eq_epochs_tr, ...
"mu_tr", eq_mu_tr, ...
"dd_mode", true, ...
"epochs_dd", eq_epochs_dd, ...
"mu_dd", 0.0012, ...
"optmize_mus", false, ...
"plot_mu_optimization", options.debug_plots, ...
"save_debug", eq_save_debug);
%%% APPLY MA filter
movavg_window_length = options.userParameters.bufferlen;
movavg_window_symmetry = "causal"; % "causal" or "noncausal"
switch movavg_window_symmetry
case "causal"
dc_estimate = movmean(Scpe_sig.signal, ...
[movavg_window_length-1,0],"Endpoints","shrink");
case "noncausal"
dc_estimate = movmean(Scpe_sig.signal, ...
movavg_window_length,"Endpoints","shrink");
otherwise
error("mpi_recipe_dev:InvalidMovAvgSymmetry", ...
"movavg_window_symmetry must be 'causal' or 'noncausal'.");
end
Scpe_sig_filt = Scpe_sig;
Scpe_sig_filt.signal = Scpe_sig.signal - dc_estimate;
clear dc_estimate;
storageName = "MovAvg_plus_conventional_FFE";
[ffe_results,equalized_signal] = runFfe(eq_ffe, "Moving-average + conventional FFE", ...
Scpe_sig_filt, Symbols, Tx_bits, options);
clear Scpe_sig_filt;
ffe_results = attachMpiReductionConfig(ffe_results, eq_ffe, storageName, ...
"MovAvg_plus_conventional_FFE", char(movavg_window_symmetry), block_update);
output.(char(storageName)) = ffe_results;
if plot_output_signals
plotEqSignals(equalized_signal,Symbols,options,400,-1);
end
end
%% High Pass Filter -> Conventional FFE
if run_hpf
eq_ffe = FFE_plain( ...
"sps", eq_sps, ...
@@ -99,11 +156,12 @@ if run_hpf
%%% APPLY HPF in MHZ order
f = Filter("f_cutoff",options.userParameters.hpf,"filterType","butterworth","lowpass",0,"filtdegree",4,"fs",options.fsym*2);
Scpe_sig = f.process(Scpe_sig);
Scpe_sig_filt = f.process(Scpe_sig);
storageName = "HPF_plus_conventional_FFE";
[ffe_results,equalized_signal] = runFfe(eq_ffe, "Conventional FFE", ...
Scpe_sig, Symbols, Tx_bits, options);
Scpe_sig_filt, Symbols, Tx_bits, options);
clear Scpe_sig_filt;
ffe_results = attachMpiReductionConfig(ffe_results, eq_ffe, storageName, ...
"HPF_plus_conventional_FFE", "hpf", block_update);
output.(char(storageName)) = ffe_results;
@@ -191,7 +249,7 @@ if run_a1
"epochs_dd", eq_epochs_dd, ...
"mu_dd", 0.012, ...
"dc_smoothing_a1", 1, ...
"dc_avg_bufferlength_a1", 2048, ...
"dc_avg_bufferlength_a1", 2048, ... %was 2048
"dc_avg_update_blocklength_a1", block_update, ...
"save_debug", eq_save_debug);
@@ -238,7 +296,19 @@ if run_tracking_adaptive
"dc_tracking", "adaptive", block_update);
output.(char(storageName)) = ffe_results;
% fignum = 106;
%
% eq_noise = equalized_signal - Symbols;
% dn = sprintf("FFE DCT; SIR: %d dB",options.dataTable.sir);
% showEQNoisePSD(eq_noise, "fignum", fignum, "displayname", dn,"colormode","diverging");
% ylim([-70 -30]);
%
% dn = sprintf("FFE only; SIR: %d dB",options.dataTable.sir);
% showEQNoisePSD(eq_noise_ffe, "fignum", fignum+1, "displayname", dn,"colormode","diverging");
% ylim([-70 -30]);
if plot_output_signals
plotEqSignals(equalized_signal,Symbols,options,450,-1);
end
end