start with 400G analysis work

This commit is contained in:
Silas Oettinghaus
2026-07-20 10:22:11 +02:00
parent cae81c0dae
commit 125d8508ca
43 changed files with 4089 additions and 123 deletions

View File

@@ -22,7 +22,7 @@ run_a2_tracked_levels = 0;
run_a2_residual = 0;
run_a1 = 0;
run_tracking_adaptive = 1;
plot_output_signals = 1;
plot_output_signals = options.debug_plots;
%% Shared fixed EQ settings
eq_sps = 2;
@@ -42,11 +42,12 @@ end
Scpe_sig = preprocessSignal(Scpe_sig_raw, Symbols, options.fsym, ...
"mode", "auto", ...
"debug_plots", options.debug_plots);
[Scpe_sig, Symbols, Tx_bits] = alignDspInputs(Scpe_sig, Symbols, Tx_bits, eq_sps);
output = struct();
%%
if plot_output_signals
showLevelScatter(Scpe_sig, Symbols, ...
showLevelScatter(Scpe_sig.normalize("mode","rms"), Symbols, ...
"fsym", options.fsym, ...
"fignum", 400, ...
"normalize", true);
@@ -283,9 +284,9 @@ if run_tracking_adaptive
"dc_tracking_persistence_gain", 0, ...
"dc_tracking_buffer_len", block_update, ...
"optmize_mus", false, ...
"optimize_dc_tracking_params", false, ...
"optimize_dc_tracking_params", true, ...
"dc_tracking_optimization_len", 2^15, ...
"dc_tracking_optimization_max_evals", 30, ...
"dc_tracking_optimization_max_evals", 20, ...
"plot_mu_optimization", options.debug_plots, ...
"save_debug", eq_save_debug);
@@ -296,16 +297,18 @@ if run_tracking_adaptive
"dc_tracking", "adaptive", block_update);
output.(char(storageName)) = ffe_results;
fignum = 106;
if options.debug_plots
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]);
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]);
end
if plot_output_signals
@@ -387,6 +390,22 @@ function description = resultDescription(prefix,options)
description = sprintf('%s; SIR %g dB',prefix,sir);
end
function [Scpe_sig, Symbols, Tx_bits] = alignDspInputs(Scpe_sig, Symbols, Tx_bits, sps)
nSymbols = min(length(Symbols), floor(length(Scpe_sig) / sps));
if nSymbols <= 0
error("mpi_recipe_dev:EmptyAlignedSignal", ...
"No overlapping samples remain after preprocessing and synchronization.");
end
Scpe_sig.signal = Scpe_sig.signal(1:sps*nSymbols);
Scpe_sig.signal = real(Scpe_sig.signal);
Symbols.signal = Symbols.signal(1:nSymbols,:);
if isprop(Tx_bits, "signal")
Tx_bits.signal = Tx_bits.signal(1:nSymbols,:);
end
end
function plotEqSignals(equalized_signal,Symbols,options,fignum,output_scale)
showLevelScatter(equalized_signal .* output_scale, Symbols, ...