From e86930335e23156ec81ea2413e459e29a3511506 Mon Sep 17 00:00:00 2001 From: Silas Oettinghaus Date: Tue, 8 Apr 2025 10:21:41 +0200 Subject: [PATCH] More focus on Database analysis and direct DSP'ing of run_id's --- Classes/00_signals/Signal.m | 17 +- Classes/DataBaseHandler/DBHandler.m | 2 - Datatypes/equalizer_structure.m | 2 +- Functions/EQ_structures/duobinary_signaling.m | 100 ++++++- Functions/EQ_structures/duobinary_target.m | 45 ++-- .../EQ_structures/vnle_postfilter_mlse.m | 245 +++++++++--------- .../Theory/modifiedGodardTimingRecovery.m | 62 +++++ .../auswertung MPI/analyze_mpi.m | 4 +- .../auswertung MPI/dsp_mpi.m | 22 +- .../auswertung MPI/dsp_mpi_database.m | 61 +++++ .../auswertung MPI/dsp_run_id.m | 194 ++++++++++++++ .../auswertung MPI/plot_from_database.m | 91 +++++-- .../db_auswertung/rate_vs_ber.m | 186 +++++++++++++ .../db_auswertung/realization_vs_ber.m | 164 ++++++++++++ projects/Messung_Zürich/AIR_simp_new.fig | Bin 0 -> 34267 bytes projects/Messung_Zürich/BER_ief.fig | Bin 0 -> 28653 bytes projects/Messung_Zürich/BER_simp_new.fig | Bin 0 -> 34689 bytes projects/Messung_Zürich/NDR_simp_new.fig | Bin 0 -> 35358 bytes projects/Messung_Zürich/NGMI_ief.fig | Bin 0 -> 26923 bytes projects/Messung_Zürich/NGMI_simp_new.fig | Bin 0 -> 33556 bytes 20 files changed, 1008 insertions(+), 187 deletions(-) create mode 100644 Functions/Theory/modifiedGodardTimingRecovery.m create mode 100644 projects/HighSpeedExperiment_2024/auswertung MPI/dsp_mpi_database.m create mode 100644 projects/HighSpeedExperiment_2024/auswertung MPI/dsp_run_id.m create mode 100644 projects/HighSpeedExperiment_2024/db_auswertung/rate_vs_ber.m create mode 100644 projects/HighSpeedExperiment_2024/db_auswertung/realization_vs_ber.m create mode 100644 projects/Messung_Zürich/AIR_simp_new.fig create mode 100644 projects/Messung_Zürich/BER_ief.fig create mode 100644 projects/Messung_Zürich/BER_simp_new.fig create mode 100644 projects/Messung_Zürich/NDR_simp_new.fig create mode 100644 projects/Messung_Zürich/NGMI_ief.fig create mode 100644 projects/Messung_Zürich/NGMI_simp_new.fig diff --git a/Classes/00_signals/Signal.m b/Classes/00_signals/Signal.m index f75ddd4..edccd25 100644 --- a/Classes/00_signals/Signal.m +++ b/Classes/00_signals/Signal.m @@ -689,10 +689,17 @@ classdef Signal %estimate start pos of signal maxpeaknum = floor(length(a)/length(b)); - [pks,pkpos,w,p] = findpeaks(abs(co./max(co)),'MinPeakDistance',length(b)/2,'MinPeakHeight',0.2,'NPeaks',maxpeaknum,'SortStr','descend'); + try + [pks,pkpos,w,p] = findpeaks(abs(co./max(co)),'MinPeakDistance',length(b)/2,'MinPeakHeight',0.2,'NPeaks',maxpeaknum,'SortStr','descend'); + catch + warning(['Error in findpeaks, ususally the seuqnece is too short. Max peak num: ', num2str(maxpeaknum)]); + return + end if mean(w) > 10 || mean(p) > 10 return + else + sequenceFound = 1; end if options.debug_plots @@ -700,6 +707,8 @@ classdef Signal findpeaks(abs(co./max(co)),'MinPeakDistance',length(b)/2,'MinPeakHeight',0.2,'NPeaks',maxpeaknum,'SortStr','descend') end + + shifts = lags(pkpos); shifts = shifts(shifts>=0); @@ -752,6 +761,12 @@ classdef Signal end + + + + + + %% function obj = filter(obj,a,b) diff --git a/Classes/DataBaseHandler/DBHandler.m b/Classes/DataBaseHandler/DBHandler.m index 32de7c5..d3bc066 100644 --- a/Classes/DataBaseHandler/DBHandler.m +++ b/Classes/DataBaseHandler/DBHandler.m @@ -677,8 +677,6 @@ classdef DBHandler < handle delete(fig); end - - function filterParams = promptFilterParameters(obj) % promptFilterParameters Prompts the user to enter filter parameters using a % custom scrollable UI with dropdowns. diff --git a/Datatypes/equalizer_structure.m b/Datatypes/equalizer_structure.m index c5bdeb2..7e338bd 100644 --- a/Datatypes/equalizer_structure.m +++ b/Datatypes/equalizer_structure.m @@ -5,8 +5,8 @@ classdef equalizer_structure < int32 vnle (1) vnle_pf_mlse (2) % db_precoded (3) - % db_encoded (4) vnle_db_mlse (3) + db_encoded (4) end end \ No newline at end of file diff --git a/Functions/EQ_structures/duobinary_signaling.m b/Functions/EQ_structures/duobinary_signaling.m index 73f131c..69c0449 100644 --- a/Functions/EQ_structures/duobinary_signaling.m +++ b/Functions/EQ_structures/duobinary_signaling.m @@ -1,18 +1,96 @@ -function [eq_package] = duobinary_signaling(eq_, mlse_,M ,rx_signal, tx_symbols, tx_bits) - %Duobinary Signaling +function [eq_package] = duobinary_signaling(eq_, mlse_,M ,rx_signal, tx_symbols, tx_bits,options) +%Duobinary Signaling +arguments + eq_ + mlse_ + M + rx_signal + tx_symbols + tx_bits + options.postFFE = []; +end - [eq_signal, eq_noise] = eq_.process(rx_signal,tx_symbols); - eq_signal = mlse_.process(eq_signal); +[eq_signal, eq_noise] = eq_.process(rx_signal,tx_symbols); - eq_signal = Duobinary().encode(eq_signal); - eq_signal = Duobinary().decode(eq_signal); +if ~isempty(options.postFFE) + [eq_signal,eq_noise] = options.postFFE.process(eq_signal,tx_symbols); +end - % M = numel(unique(eq_signal.signal)); - rx_bits = PAMmapper(M,0).demap(eq_signal); - [~,numErrors,ber,~] = calc_ber(rx_bits.signal,tx_bits.signal,"skip_front",100,"skip_end",150,"returnErrorLocation",1); +eq_signal = mlse_.process(eq_signal); + +eq_signal = Duobinary().encode(eq_signal); +eq_signal = Duobinary().decode(eq_signal); + +% M = numel(unique(eq_signal.signal)); +rx_bits = PAMmapper(M,0).demap(eq_signal); + +[bits_db,errors_db,ber_db,~] = calc_ber(rx_bits.signal,tx_bits.signal,"skip_front",100,"skip_end",150,"returnErrorLocation",1); + +eq_package.ber = ber_db; + +resultsDBsignaling = struct( ... + 'result_id', NaN, ... % + 'run_id', NaN, ... % Beispielhafte Run-ID + 'eqParam_id', NaN, ... % Beispielhafter Fremdschlüssel zur EqualizerParameters-Tabelle + 'date_of_processing', datetime('now'), ... % Aktuelles Datum und Uhrzeit + 'numBits', bits_db, ... % Beispiel: 1.000.000 Bits + 'numBitErr', errors_db, ... % Beispiel: 120 Bitfehler + 'BER_precoded', [], ... % BER = 120 / 1.000.000 + 'numBitErr_precoded', [], ... % Beispiel: 120 Bitfehler + 'BER', ber_db, ... % BER = 120 / 1.000.000 + 'SNR', [], ... % Beispielhafte SNR + 'SNR_level', jsonencode([]), ... % SNR-Level als JSON-codiertes Array + 'GMI', [], ... % Beispielhafter GMI-Wert + 'AIR', [], ... % Beispielhafter AIR-Wert + 'EVM', [], ... % Beispielhafte EVM + 'EVM_level', jsonencode([]), ... % EVM-Level als JSON-codiertes Array + 'Alpha', [] ... % Beispielhafter Alpha-Wert + ); + +if ~isempty(options.postFFE) + npostFFE = options.postFFE.order; +else + npostFFE = 0; +end + +equalizerConfigDBsignaling = struct( ... + 'eq_id', NaN, ... % Auto-Inkrement, wird in der DB gesetzt + 'equalizer_structure', int32(equalizer_structure.db_encoded), ... % Beispiel: 1 (z.B. für vnle) + 'M', M, ... % Ordnung der PAM-Konstellation + 'target_constellation', jsonencode(round(unique(tx_symbols.signal),5)), ... % Beispielhafter Target-String + 'db_target', 1, ... % 0 oder 1 + 'diff_precode', 1, ... % 0 oder 1 + 'postFFE', ~isempty(options.postFFE), ... % Beispielwert + 'NpostFFE', npostFFE, ... % Beispielwert + 'Ne1', eq_.Ne(1), ... % Feedforward Koeffizienten 1. Ordnung + 'Ne2', eq_.Ne(2), ... % Feedforward Koeffizienten 2. Ordnung + 'Ne3', eq_.Ne(3), ... % Feedforward Koeffizienten 3. Ordnung + 'Nb1', eq_.Nb(1), ... % Decision Feedback Koeffizienten 1. Ordnung + 'Nb2', eq_.Nb(2), ... % Decision Feedback Koeffizienten 2. Ordnung + 'Nb3', eq_.Nb(3), ... % Decision Feedback Koeffizienten 3. Ordnung + 'K', eq_.K, ... % Samples pro Symbol + 'DCmu', eq_.DCmu, ... % Anpassungsrate für DC-Tap + 'ideal_dfe', eq_.ideal_dfe, ... % Flag für ideal DFE (0 oder 1) + 'training_length', eq_.training_length, ... % Anzahl Trainingssymbole + 'training_loops', eq_.training_loops, ... % Anzahl Trainingsdurchläufe + 'TRmu1', eq_.FFEmu, ... % mu für DD-Modus (1. Ordnung) + 'TRmu2', eq_.FFEmu, ... % mu für DD-Modus (2. Ordnung) + 'TRmu3', eq_.FFEmu, ... % mu für DD-Modus (3. Ordnung) + 'TRmuDFE', eq_.DFEmu, ... % mu für DFE-Modus im DD + 'dd_loops', 5, ... % Anzahl Durchläufe im DD-Modus + 'DDmu1', eq_.DDmu(1), ... % mu für DD-Modus (1. Ordnung) + 'DDmu2', eq_.DDmu(2), ... % mu für DD-Modus (2. Ordnung) + 'DDmu3', eq_.DDmu(3), ... % mu für DD-Modus (3. Ordnung) + 'DDmuDFE', eq_.DDmu(4), ... % mu für DFE-Modus im DD + 'MLSE_mode', 'viterbi', ... % Beispiel: MLSE-Modus als String + 'MLSE_trellis_states', jsonencode(mlse_.trellis_states), ... % Trellis-States, z.B. als JSON-String oder kommasepariert + 'comment', 'function: duobinary_target.m', ... % Zusätzliche Kommentare + 'config_hash', NaN ... + ); + +eq_package.resultsDBsignaling = resultsDBsignaling; +eq_package.equalizerConfigDBsignaling = equalizerConfigDBsignaling; - eq_package.ber = ber; - end \ No newline at end of file diff --git a/Functions/EQ_structures/duobinary_target.m b/Functions/EQ_structures/duobinary_target.m index cbb880e..8d66efb 100644 --- a/Functions/EQ_structures/duobinary_target.m +++ b/Functions/EQ_structures/duobinary_target.m @@ -30,35 +30,42 @@ mlse_sig_hd = PAMmapper(M,0,"eth_style",options.eth_style_symbol_mapping).quanti % precoding to mitigate error propagation, most prominently used in % combination with duobinary signaling to avoid catastrophic error % behavior (see J.W.M. Bergmans, Digital Baseband Transmission and Recording -> partial response signaling) - -% takes: -% -> eq_signal_hd: hard decision signal after eq -% -> tx_symbols: that where used as reference for eq - switch options.precode_mode - case db_mode.db_emulate - mlse_sig_hd = Duobinary().encode(mlse_sig_hd,"M",M); - mlse_sig_hd = Duobinary().decode(mlse_sig_hd,"M",M); + case db_mode.no_db + % TX Data is not precoded: + + % A) Emulate diff precoding + mlse_sig_hd_precoded = Duobinary().encode(mlse_sig_hd,"M",M); + mlse_sig_hd_precoded = Duobinary().decode(mlse_sig_hd_precoded,"M",M); tx_symbols_precoded = Duobinary().encode(tx_symbols); tx_symbols_precoded = Duobinary().decode(tx_symbols_precoded); - tx_bits = PAMmapper(M,0,"eth_style",options.eth_style_symbol_mapping).demap(tx_symbols_precoded); + tx_bits_precoded = PAMmapper(M,0,"eth_style",options.eth_style_symbol_mapping).demap(tx_symbols_precoded); - case db_mode.db_discard + rx_bits_mlse = PAMmapper(M,0,"eth_style",options.eth_style_symbol_mapping).demap(mlse_sig_hd_precoded); + [~,errors_db_diff_precoded,ber_db_diff_precoded,~] = calc_ber(rx_bits_mlse.signal,tx_bits_precoded.signal,"skip_front",100,"skip_end",150,"returnErrorLocation",1); - % normal dsp for precoded sequence == discard/omit/ignore precode - tx_bits = PAMmapper(M,0,"eth_style",options.eth_style_symbol_mapping).demap(tx_symbols); - - case db_mode.db_encoded - - % normal DB encoded data (only for 10KM) + %B) Just determine BER + rx_bits_mlse = PAMmapper(M,0,"eth_style",options.eth_style_symbol_mapping).demap(mlse_sig_hd); + [bits_mlse,errors_mlse,ber_db,~] = calc_ber(rx_bits_mlse.signal,tx_bits.signal,"skip_front",100,"skip_end",150,"returnErrorLocation",1); case db_mode.db_precoded - mlse_sig_hd = Duobinary().encode(mlse_sig_hd,"M",M); - mlse_sig_hd = Duobinary().decode(mlse_sig_hd,"M",M); + % Daten SIND TATSÄCHLICH precoded auf TX Seite: + + % A) Decode at Rx if no DB targeting was applied (we are in VNLE or MLSE EQ structure here! + mlse_sig_hd_decoded = Duobinary().encode(mlse_sig_hd,"M",M); + mlse_sig_hd_decoded = Duobinary().decode(mlse_sig_hd_decoded,"M",M); + rx_bits_mlse_decoded = PAMmapper(M,0,"eth_style",options.eth_style_symbol_mapping).demap(mlse_sig_hd_decoded); + [~,errors_db_diff_precoded,ber_db_diff_precoded,~] = calc_ber(rx_bits_mlse_decoded.signal,tx_bits.signal,"skip_front",100,"skip_end",150,"returnErrorLocation",1); + + % B) Omit the Coding by comparing with demapped TX symbol sequence + + tx_bits = PAMmapper(M,0,"eth_style",options.eth_style_symbol_mapping).demap(tx_symbols); + rx_bits_mlse = PAMmapper(M,0,"eth_style",options.eth_style_symbol_mapping).demap(mlse_sig_hd); + [bits_db,errors_db,ber_db,~] = calc_ber(rx_bits_mlse.signal,tx_bits.signal,"skip_front",100,"skip_end",150,"returnErrorLocation",1); end @@ -75,6 +82,8 @@ resultsDBtgt = struct( ... 'date_of_processing', datetime('now'), ... % Aktuelles Datum und Uhrzeit 'numBits', bits_db, ... % Beispiel: 1.000.000 Bits 'numBitErr', errors_db, ... % Beispiel: 120 Bitfehler + 'BER_precoded', ber_db_diff_precoded, ... % BER = 120 / 1.000.000 + 'numBitErr_precoded', errors_db_diff_precoded, ... % Beispiel: 120 Bitfehler 'BER', ber_db, ... % BER = 120 / 1.000.000 'SNR', [], ... % Beispielhafte SNR 'SNR_level', jsonencode([]), ... % SNR-Level als JSON-codiertes Array diff --git a/Functions/EQ_structures/vnle_postfilter_mlse.m b/Functions/EQ_structures/vnle_postfilter_mlse.m index aa5e716..35ea356 100644 --- a/Functions/EQ_structures/vnle_postfilter_mlse.m +++ b/Functions/EQ_structures/vnle_postfilter_mlse.m @@ -1,118 +1,128 @@ function [eq_package] = vnle_postfilter_mlse(eq_,pf_,mlse_,M,rx_signal,tx_symbols,tx_bits,options) - + arguments - eq_ - pf_ - mlse_ - M - rx_signal - tx_symbols - tx_bits + eq_ + pf_ + mlse_ + M + rx_signal + tx_symbols + tx_bits options.precode_mode db_mode options.showAnalysis = 0; options.eth_style_symbol_mapping = 0; - options.postFFE = []; + options.postFFE = []; options.database = []; end - %FFE or VNLE - [eq_signal_sd,eq_noise] = eq_.process(rx_signal,tx_symbols); +%FFE or VNLE +[eq_signal_sd,eq_noise] = eq_.process(rx_signal,tx_symbols); - if ~isempty(options.postFFE) - [eq_signal_sd,eq_noise] = options.postFFE.process(eq_signal_sd,tx_symbols); - end +if ~isempty(options.postFFE) + [eq_signal_sd,eq_noise] = options.postFFE.process(eq_signal_sd,tx_symbols); +end - eq_signal_hd = PAMmapper(M,0).quantize(eq_signal_sd); +eq_signal_hd = PAMmapper(M,0).quantize(eq_signal_sd); - mlse_sig_sd = pf_.process(eq_signal_sd,eq_noise); +mlse_sig_sd = pf_.process(eq_signal_sd,eq_noise); - mlse_.DIR = pf_.coefficients; - % [mlse_sig_hd,mlse_sig_sd] = mlse_.process(mlse_sig_sd,tx_symbols); - mlse_sig_sd = mlse_.process(mlse_sig_sd); +mlse_.DIR = pf_.coefficients; +% [mlse_sig_hd,mlse_sig_sd] = mlse_.process(mlse_sig_sd,tx_symbols); +mlse_sig_sd = mlse_.process(mlse_sig_sd); - mlse_sig_hd = PAMmapper(M,0,"eth_style",options.eth_style_symbol_mapping).quantize(mlse_sig_sd); +mlse_sig_hd = PAMmapper(M,0,"eth_style",options.eth_style_symbol_mapping).quantize(mlse_sig_sd); - % precoding to mitigate error propagation, most prominently used in - % combination with duobinary signaling to avoid catastrophic error - % behavior (see J.W.M. Bergmans, Digital Baseband Transmission and Recording -> partial response signaling) +% precoding to mitigate error propagation, most prominently used in +% combination with duobinary signaling to avoid catastrophic error +% behavior (see J.W.M. Bergmans, Digital Baseband Transmission and Recording -> partial response signaling) - % takes: - % -> M - % -> eq_signal_hd: hard decision signal after eq - % -> tx_symbols: that where used as reference for eq +switch options.precode_mode - switch options.precode_mode - case db_mode.db_emulate - % re - eq_signal_hd = Duobinary().encode(eq_signal_hd,"M",M); - eq_signal_hd = Duobinary().decode(eq_signal_hd,"M",M); + case db_mode.no_db + % TX Data is not precoded: - mlse_sig_hd = Duobinary().encode(mlse_sig_hd,"M",M); - mlse_sig_hd = Duobinary().decode(mlse_sig_hd,"M",M); + % A) Emulate diff precoding + eq_signal_hd_precoded = Duobinary().encode(eq_signal_hd,"M",M); + eq_signal_hd_precoded = Duobinary().decode(eq_signal_hd_precoded,"M",M); + + mlse_sig_hd_precoded = Duobinary().encode(mlse_sig_hd,"M",M); + mlse_sig_hd_precoded = Duobinary().decode(mlse_sig_hd_precoded,"M",M); tx_symbols_precoded = Duobinary().encode(tx_symbols); tx_symbols_precoded = Duobinary().decode(tx_symbols_precoded); - tx_bits = PAMmapper(M,0,"eth_style",options.eth_style_symbol_mapping).demap(tx_symbols_precoded); + tx_bits_precoded = PAMmapper(M,0,"eth_style",options.eth_style_symbol_mapping).demap(tx_symbols_precoded); - case db_mode.db_discard + rx_bits_vnle = PAMmapper(M,0,"eth_style",options.eth_style_symbol_mapping).demap(eq_signal_hd_precoded); + [~,errors_vnle_diff_precoded,ber_vnle_diff_precoded,~] = calc_ber(rx_bits_vnle.signal,tx_bits_precoded.signal,"skip_front",100,"skip_end",150,"returnErrorLocation",1); + + rx_bits_mlse = PAMmapper(M,0,"eth_style",options.eth_style_symbol_mapping).demap(mlse_sig_hd_precoded); + [~,errors_mlse_diff_precoded,ber_mlse_diff_precoded,~] = calc_ber(rx_bits_mlse.signal,tx_bits_precoded.signal,"skip_front",100,"skip_end",150,"returnErrorLocation",1); + + %B) Just determine BER + rx_bits_vnle = PAMmapper(M,0,"eth_style",options.eth_style_symbol_mapping).demap(eq_signal_hd); + [bits_vnle,errors_vnle,ber_vnle,~] = calc_ber(rx_bits_vnle.signal,tx_bits.signal,"skip_front",100,"skip_end",150,"returnErrorLocation",1); + + rx_bits_mlse = PAMmapper(M,0,"eth_style",options.eth_style_symbol_mapping).demap(mlse_sig_hd); + [bits_mlse,errors_mlse,ber_mlse,~] = calc_ber(rx_bits_mlse.signal,tx_bits.signal,"skip_front",100,"skip_end",150,"returnErrorLocation",1); + + case db_mode.db_precoded + + % Daten SIND TATSÄCHLICH precoded auf TX Seite: + + % A) Decode at Rx if no DB targeting was applied (we are in VNLE or MLSE EQ structure here! + eq_signal_hd_decoded = Duobinary().encode(eq_signal_hd,"M",M); + eq_signal_hd_decoded = Duobinary().decode(eq_signal_hd_decoded,"M",M); + rx_bits_vnle_decoded = PAMmapper(M,0,"eth_style",options.eth_style_symbol_mapping).demap(eq_signal_hd_decoded); + [~,errors_vnle_diff_precoded,ber_vnle_diff_precoded,~] = calc_ber(rx_bits_vnle_decoded.signal,tx_bits.signal,"skip_front",100,"skip_end",150,"returnErrorLocation",1); + + mlse_sig_hd_decoded = Duobinary().encode(mlse_sig_hd,"M",M); + mlse_sig_hd_decoded = Duobinary().decode(mlse_sig_hd_decoded,"M",M); + rx_bits_mlse_decoded = PAMmapper(M,0,"eth_style",options.eth_style_symbol_mapping).demap(mlse_sig_hd_decoded); + [~,errors_mlse_diff_precoded,ber_mlse_diff_precoded,~] = calc_ber(rx_bits_mlse_decoded.signal,tx_bits.signal,"skip_front",100,"skip_end",150,"returnErrorLocation",1); + + % B) Omit the Coding by comparing with demapped TX symbol sequence - % normal dsp for precoded sequence == discard/omit/ignore precode tx_bits = PAMmapper(M,0,"eth_style",options.eth_style_symbol_mapping).demap(tx_symbols); + rx_bits_vnle = PAMmapper(M,0,"eth_style",options.eth_style_symbol_mapping).demap(eq_signal_hd); + [bits_vnle,errors_vnle,ber_vnle,~] = calc_ber(rx_bits_vnle.signal,tx_bits.signal,"skip_front",100,"skip_end",150,"returnErrorLocation",1); - case db_mode.db_encoded + rx_bits_mlse = PAMmapper(M,0,"eth_style",options.eth_style_symbol_mapping).demap(mlse_sig_hd); + [bits_mlse,errors_mlse,ber_mlse,~] = calc_ber(rx_bits_mlse.signal,tx_bits.signal,"skip_front",100,"skip_end",150,"returnErrorLocation",1); - % normal DB encoded data (only for 10KM) +end - case db_mode.db_precoded +% METRICS OF VNLE SD Signal: +[snr_vnle,snr_vnle_lvl] = calc_snr(tx_symbols.signal,eq_noise.signal); +[gmi_vnle] = calc_air(eq_signal_sd,tx_symbols,"skip_front",10000,"skip_end",10000); +air_vnle = tx_symbols.fs .* floor(log2(double(M))*10)/10 .* gmi_vnle ./ log2(double(M)); +[evm_vnle_total,evm_vnle_lvl] = calc_evm(eq_signal_sd,tx_symbols); - eq_signal_hd = Duobinary().encode(eq_signal_hd,"M",M); - eq_signal_hd = Duobinary().decode(eq_signal_hd,"M",M); +% METRICS OF MLSE (HD-VITERBI) +pf_.ncoeff = 1; +pf_.process(eq_signal_sd,eq_noise); +alpha = pf_.coefficients(2); - mlse_sig_hd = Duobinary().encode(mlse_sig_hd,"M",M); - mlse_sig_hd = Duobinary().decode(mlse_sig_hd,"M",M); +eq_package.ber_mlse = ber_mlse; +eq_package.ber_vnle = ber_vnle; +eq_package.evm_vnle_total = evm_vnle_total; +eq_package.evm_vnle_lvl = evm_vnle_lvl; +eq_package.gmi = gmi_vnle; - end +eq_package.eq = eq_; +eq_package.pf = pf_; +eq_package.mlse = mlse_; - % METRICS OF VNLE % - rx_bits_vnle = PAMmapper(M,0,"eth_style",options.eth_style_symbol_mapping).demap(eq_signal_hd); - [bits_vnle,errors_vnle,ber_vnle,errorIndice_vnle] = calc_ber(rx_bits_vnle.signal,tx_bits.signal,"skip_front",100,"skip_end",150,"returnErrorLocation",1); - [snr_vnle,snr_vnle_lvl] = calc_snr(tx_symbols.signal,eq_noise.signal); - - % correct TUM implementation of AIR - [gmi_vnle] = calc_air(eq_signal_sd,tx_symbols,"skip_front",10000,"skip_end",10000); - gmi_vnle = min(max(abs(gmi_vnle),0.1),0); %set to zero if no convergence of gmi below 0.1 to avoid negative or any other "dumb" value - air_vnle = tx_symbols.fs .* floor(log2(8)*10)/10 .* gmi_vnle; - - [evm_vnle_total,evm_vnle_lvl] = calc_evm(eq_signal_sd,tx_symbols); - - % METRICS OF MLSE (HD-VITERBI) - rx_bits_mlse = PAMmapper(M,0,"eth_style",options.eth_style_symbol_mapping).demap(mlse_sig_hd); - [bits_mlse,errors_mlse,ber_mlse,errorIndice_mlse]= calc_ber(rx_bits_mlse.signal,tx_bits.signal,"skip_front",100,"skip_end",150,"returnErrorLocation",1); - - pf_.ncoeff = 1; - pf_.process(eq_signal_sd,eq_noise); - alpha = pf_.coefficients(2); - - - eq_package.ber_mlse = ber_mlse; - eq_package.ber_vnle = ber_vnle; - eq_package.evm_vnle_total = evm_vnle_total; - eq_package.evm_vnle_lvl = evm_vnle_lvl; - eq_package.gmi = gmi_vnle; - - eq_package.eq = eq_; - eq_package.pf = pf_; - eq_package.mlse = mlse_; - - resultsVNLE = struct( ... +resultsVNLE = struct( ... 'result_id', NaN, ... % 'run_id', NaN, ... % Beispielhafte Run-ID 'eqParam_id', NaN, ... % Beispielhafter Fremdschlüssel zur EqualizerParameters-Tabelle 'date_of_processing', datetime('now'), ... % Aktuelles Datum und Uhrzeit + 'BER', ber_vnle, ... % BER = 120 / 1.000.000 'numBits', bits_vnle, ... % Beispiel: 1.000.000 Bits 'numBitErr', errors_vnle, ... % Beispiel: 120 Bitfehler - 'BER', ber_vnle, ... % BER = 120 / 1.000.000 + 'BER_precoded', ber_vnle_diff_precoded, ... % BER = 120 / 1.000.000 + 'numBitErr_precoded', errors_vnle_diff_precoded, ... % Beispiel: 120 Bitfehler 'SNR', snr_vnle, ... % Beispielhafte SNR 'SNR_level', jsonencode(snr_vnle_lvl), ... % SNR-Level als JSON-codiertes Array 'GMI', gmi_vnle, ... % Beispielhafter GMI-Wert @@ -120,15 +130,15 @@ end 'EVM', evm_vnle_total, ... % Beispielhafte EVM 'EVM_level', jsonencode(evm_vnle_lvl), ... % EVM-Level als JSON-codiertes Array 'Alpha', [] ... % Beispielhafter Alpha-Wert -); + ); - if ~isempty(options.postFFE) - npostFFE = options.postFFE.order; - else - npostFFE = 0; - end +if ~isempty(options.postFFE) + npostFFE = options.postFFE.order; +else + npostFFE = 0; +end - equalizerConfigVNLE = struct( ... +equalizerConfigVNLE = struct( ... 'eq_id', NaN, ... % Auto-Inkrement, wird in der DB gesetzt 'equalizer_structure', int32(equalizer_structure.vnle), ... % Beispiel: 1 (z.B. für vnle) 'M', M, ... % Ordnung der PAM-Konstellation @@ -158,18 +168,20 @@ end 'DDmu3', eq_.DDmu(3), ... % mu für DD-Modus (3. Ordnung) 'DDmuDFE', eq_.DDmu(4), ... % mu für DFE-Modus im DD 'comment', 'function: vnle_postfilter_mlse', ... % Zusätzliche Kommentare - 'config_hash', NaN ... -); + 'config_hash', NaN ... + ); - resultsMLSE = struct( ... +resultsMLSE = struct( ... 'result_id', NaN, ... % 'run_id', NaN, ... % Beispielhafte Run-ID 'eqParam_id', NaN, ... % Beispielhafter Fremdschlüssel zur EqualizerParameters-Tabelle 'date_of_processing', datetime('now'), ... % Aktuelles Datum und Uhrzeit + 'BER', ber_mlse, ... % BER = 120 / 1.000.000 'numBits', bits_mlse, ... % Beispiel: 1.000.000 Bits 'numBitErr', errors_mlse, ... % Beispiel: 120 Bitfehler - 'BER', ber_mlse, ... % BER = 120 / 1.000.000 + 'BER_precoded', ber_mlse_diff_precoded, ... % BER = 120 / 1.000.000 + 'numBitErr_precoded', errors_mlse_diff_precoded, ... % Beispiel: 120 Bitfehler 'SNR', [], ... % Beispielhafte SNR 'SNR_level', jsonencode([]), ... % SNR-Level als JSON-codiertes Array 'GMI', [], ... % Beispielhafter GMI-Wert @@ -178,11 +190,10 @@ end 'EVM_level', jsonencode([]), ... % EVM-Level als JSON-codiertes Array 'Alpha', alpha, ... % Beispielhafter Alpha-Wert 'MLSE_dir', jsonencode([mlse_.DIR])... -); + ); - - equalizerConfigMLSE = struct( ... +equalizerConfigMLSE = struct( ... 'eq_id', NaN, ... % Auto-Inkrement, wird in der DB gesetzt 'equalizer_structure', int32(equalizer_structure.vnle_pf_mlse), ... % Beispiel: 1 (z.B. für vnle) 'M', M, ... % Ordnung der PAM-Konstellation @@ -214,43 +225,43 @@ end 'MLSE_mode', 'viterbi', ... % Beispiel: MLSE-Modus als String 'MLSE_trellis_states', jsonencode(mlse_.trellis_states), ... % Trellis-States, z.B. als JSON-String oder kommasepariert 'comment', 'function: vnle_postfilter_mlse', ... % Zusätzliche Kommentare - 'config_hash', NaN ... -); - eq_package.resultsVNLE = resultsVNLE; - eq_package.resultsMLSE = resultsMLSE; - eq_package.equalizerConfigVNLE = equalizerConfigVNLE; - eq_package.equalizerConfigMLSE = equalizerConfigMLSE; + 'config_hash', NaN ... + ); +eq_package.resultsVNLE = resultsVNLE; +eq_package.resultsMLSE = resultsMLSE; +eq_package.equalizerConfigVNLE = equalizerConfigVNLE; +eq_package.equalizerConfigMLSE = equalizerConfigMLSE; - % eq_package.vnle_out = eq_signal_sd; - if options.showAnalysis +% eq_package.vnle_out = eq_signal_sd; +if options.showAnalysis - % fprintf(['VNLE EVM lvl: ',repmat('%.3f ',1,numel(evm_lvl)),' \n'],evm_lvl); + % fprintf(['VNLE EVM lvl: ',repmat('%.3f ',1,numel(evm_lvl)),' \n'],evm_lvl); - fprintf('VNLE BER: %.2e \n',ber_vnle); + fprintf('VNLE BER: %.2e \n',ber_vnle); - fprintf('MLSE BER: %.2e \n',ber_mlse); + fprintf('MLSE BER: %.2e \n',ber_mlse); - showEQNoisePSD(eq_noise,"fignum",336,"displayname",'Residual Noise after VNLE','postfilter_taps',pf_.coefficients); - + showEQNoisePSD(eq_noise,"fignum",336,"displayname",'Residual Noise after VNLE','postfilter_taps',pf_.coefficients); - rx_signal.spectrum("normalizeTo0dB",1,"fignum",337,"displayname",'Rx Signal'); - tx_symbols.spectrum("normalizeTo0dB",1,"fignum",337,'displayname','Tx Signal'); + rx_signal.spectrum("normalizeTo0dB",1,"fignum",337,"displayname",'Rx Signal'); - showLevelHistogram(eq_signal_sd,tx_symbols) - % showLevelHistogram(mlse_sig_sd,tx_symbols) + tx_symbols.spectrum("normalizeTo0dB",1,"fignum",337,'displayname','Tx Signal'); - showEQcoefficients('n1',eq_.e,'n2',eq_.e2,'n3',eq_.e3,"displayname",'Coefficients'); + showLevelHistogram(eq_signal_sd,tx_symbols) + % showLevelHistogram(mlse_sig_sd,tx_symbols) - showEQNoiseSNR(tx_symbols,eq_noise,"displayname",'vnle snr','fignum',101); + showEQcoefficients('n1',eq_.e,'n2',eq_.e2,'n3',eq_.e3,"displayname",'Coefficients'); - %%% EQ SNR Spectrum %230 - %snr - + showEQNoiseSNR(tx_symbols,eq_noise,"displayname",'vnle snr','fignum',101); - % showErrorBurstCount(eq_signal_sd,tx_symbols) - + %%% EQ SNR Spectrum %230 + %snr - end + + % showErrorBurstCount(eq_signal_sd,tx_symbols) + + +end end \ No newline at end of file diff --git a/Functions/Theory/modifiedGodardTimingRecovery.m b/Functions/Theory/modifiedGodardTimingRecovery.m new file mode 100644 index 0000000..d8a5214 --- /dev/null +++ b/Functions/Theory/modifiedGodardTimingRecovery.m @@ -0,0 +1,62 @@ +function tau_error = modifiedGodardTimingRecovery(rx, N, eta, beta) +% modifiedGodardTimingRecovery +% +% This function estimates the symbol timing error using the modified Godard +% approach in the frequency domain as described in: +% +% "Modified Godard Timing Recovery for Non-Integer Oversampling Receivers" +% Appl. Sci. 2017, 7, 655. :contentReference[oaicite:0]{index=0}​:contentReference[oaicite:1]{index=1} +% +% Inputs: +% rx - Received time-domain signal (vector) +% N - FFT size (should be an even integer) +% eta - Effective oversampling factor used for timing recovery (eta > 1) +% beta - Roll-off related parameter (0 < beta <= 1) +% +% Output: +% tau_error - Estimated timing error (in sample units) +% +% Implementation Notes: +% 1. The function computes an N-point FFT of the first N samples of rx. +% 2. It then determines an offset (Delta) defined as: +% offset = round((1 - 1/eta) * N) +% 3. To avoid index overflow, the summation is taken over indices k from 1 to +% floor(N/2) - offset. +% 4. The timing error is estimated as: +% tau_error = ( (1+beta)/(2*eta*N - 1) * sum(phase difference) ) / (2*pi) +% where the phase difference is (angle(R(k)) - angle(R(k+offset))) +% +% Make sure that the input signal rx contains at least N samples. + +% Check input length +if length(rx) < N + error('Input signal length must be at least N.'); +end + +% Compute the N-point FFT of the first N samples of rx +R = fft(rx(1:N), N); + +% Determine the offset based on the oversampling factor (eta) +offset = round((1 - 1/eta) * N); + +% Define the summation range to avoid index overflow +k_min = 1; +k_max = floor(N/2) - offset; +if k_max < k_min + error('Chosen parameters result in an empty summation range. Adjust N, eta, or beta.'); +end + +% Compute the sum of phase differences over the selected frequency bins +phase_diff_sum = 0; +for k = k_min:k_max + phase_k = angle(R(k)); + phase_k_offset = angle(R(k + offset)); + phase_diff_sum = phase_diff_sum + (phase_k - phase_k_offset); +end + +% Normalization factor as per the modified Godard algorithm +norm_factor = (1 + beta) / (2 * eta * N - 1); + +% Estimate the timing error in sample units +tau_error = (norm_factor * phase_diff_sum) / (2 * pi); +end diff --git a/projects/HighSpeedExperiment_2024/auswertung MPI/analyze_mpi.m b/projects/HighSpeedExperiment_2024/auswertung MPI/analyze_mpi.m index 7381091..eb7ca85 100644 --- a/projects/HighSpeedExperiment_2024/auswertung MPI/analyze_mpi.m +++ b/projects/HighSpeedExperiment_2024/auswertung MPI/analyze_mpi.m @@ -6,10 +6,10 @@ if 1 uloops = struct; uloops.precomp = [0,1]; uloops.db_precode = [0,1]; - uloops.bitrate = [224,336,360,390,420,448].*1e9; %[300,330,360,390,420,450,480] [224,336,360,390,420,448] for MPI + uloops.bitrate = [420].*1e9; %[300,330,360,390,420,450,480] [224,336,360,390,420,448] for MPI % uloops.laser_wavelength = [1293,1297.5,1302,1306.5,1310,1313.4,1318,1322.7,1327.4]; uloops.laser_wavelength = [1310]; - uloops.M = [4,6,8]; + uloops.M = [4]; uloops.link_length = [1]; % 1,2,3,5,6,8,10 wh = DataStorage(uloops); wh.addStorage("ber"); diff --git a/projects/HighSpeedExperiment_2024/auswertung MPI/dsp_mpi.m b/projects/HighSpeedExperiment_2024/auswertung MPI/dsp_mpi.m index 1796127..8c6b5be 100644 --- a/projects/HighSpeedExperiment_2024/auswertung MPI/dsp_mpi.m +++ b/projects/HighSpeedExperiment_2024/auswertung MPI/dsp_mpi.m @@ -203,7 +203,7 @@ for iatt = 1:numel(dataTable.interference_attenuation) if ~found Raw_signal = load([basePath, char(dataTable.rx_raw_path(1))]); Raw_signal = Raw_signal.Scpe_sig_raw; - [~,Scpe_cell,found] =Raw_signal.tsynch("reference",Symbols,"fs_ref",fsym,"debug_plots",0); + [~,Scpe_cell,found] =Raw_signal.tsynch("reference",Symbols,"fs_ref",fsym,"debug_plots",1); end if ~found @@ -217,16 +217,6 @@ for iatt = 1:numel(dataTable.interference_attenuation) end end - - % - % Raw_signal = Filter('filtdegree',4,"f_cutoff",Symbols.fs.*0.55,"fs",Raw_signal.fs,"filterType",filtertypes.gaussian,"active",true).process(Raw_signal); - % - % Scpe_cell{1}.eye(fsym,M,"displayname",'eye','fignum',227); - % - % Raw_signal.spectrum("normalizeTo0dB",0,"fignum",11,"fft_length",2^12); - % Raw_signal.move_it_spectrum("fignum",334); - % Raw_signal.move_it_spectrum("fignum",334); - fsym = Symbols.fs; if db_precode @@ -249,13 +239,7 @@ for iatt = 1:numel(dataTable.interference_attenuation) Scpe_sig = Filter('filtdegree',4,"f_cutoff",Symbols.fs.*0.5,"fs",Scpe_sig.fs,"filterType",filtertypes.gaussian,"active",true).process(Scpe_sig); Scpe_sig = Scpe_sig - mean(Scpe_sig.signal); - % - % Pform = Pulseformer("fsym",Scpe_sig.fs,"fdac",2*fsym,"pulse","rrc","pulselength",16,"alpha",rcalpha,"matched",0); - % - % Scpe_sig_matched = Pform.process(Scpe_sig); - % - % Scpe_sig.spectrum("normalizeTo0dB",0,"fignum",336,"displayname","scope "); - % Scpe_sig_matched.spectrum("normalizeTo0dB",0,"fignum",336,"displayname","matched"); + %%% EQUALIZING @@ -277,6 +261,7 @@ for iatt = 1:numel(dataTable.interference_attenuation) vnle_dfe_package{iatt,occ} = result; end + %%%%% VNLE + PF + MLSE %%%% if 1 @@ -299,7 +284,6 @@ for iatt = 1:numel(dataTable.interference_attenuation) end - %%%%% Duobinary Targeting %%%% if 1 diff --git a/projects/HighSpeedExperiment_2024/auswertung MPI/dsp_mpi_database.m b/projects/HighSpeedExperiment_2024/auswertung MPI/dsp_mpi_database.m new file mode 100644 index 0000000..c34aa7d --- /dev/null +++ b/projects/HighSpeedExperiment_2024/auswertung MPI/dsp_mpi_database.m @@ -0,0 +1,61 @@ + +% 1) Find RUN ID's + +basePath = 'C:\Users\Silas\Documents\MATLAB\Datensätze\sioe_labor\'; +database = DBHandler("pathToDB",[basePath,'silas_labor.db']); + +filterParams = database.tables; +filterParams.Configurations = struct( ... + 'bitrate', [], ... %[224,336,360,390,420,448] + 'db_mode', [], ... + 'fiber_length', [], ... + 'interference_attenuation',[], ... + 'is_mpi', 0, ... + 'pam_level', [], ... + 'rop_attenuation', 0 ... + ); + +selectedFields = {'Runs.run_id',... + 'Configurations.db_mode','Configurations.pam_level','Configurations.bitrate','Configurations.symbolrate','Configurations.fiber_length','Configurations.wavelength',... + 'Configurations.precomp_amp','Measurements.power_rop','Measurements.power_pd_in','Configurations.v_bias','Configurations.is_mpi',... + 'Configurations.interference_attenuation','Configurations.rop_attenuation'}; + +[dataTable,sql_query] = database.queryDB(filterParams, selectedFields); + +% only the rows without BER so far +% dataTable = dataTable(dataTable.BER == 0,:); +dataTable = dataTable((dataTable.fiber_length ~= 1),:); + +% Ensure a parallel pool is running +pool = gcp('nocreate'); +if isempty(pool) + pool = parpool; + % stop all forgotten or unfetched jobs from queue +elseif ~isempty(pool.FevalQueue.QueuedFutures) || ~isempty(pool.FevalQueue.RunningFutures) + oldq = length(pool.FevalQueue.QueuedFutures) + length(pool.FevalQueue.RunningFutures); + pool.FevalQueue.cancelAll + fprintf('Canceled %d unfetched jobs from old queue.', oldq); +end + +% Number of tasks to submit (one per run_id) +nTasks = height(dataTable); +futures = parallel.FevalFuture.empty(); + +% Submit each DSP run as a parallel task using parfeval +for i = 1:nTasks + % Extract the run_id (other parameters could be passed if needed) + runID = dataTable.run_id(i); + % Submit the function call to dsp_run_id (assuming it returns no output, hence 0 outputs) + futures(i) = parfeval(pool, @dsp_run_id, 0, runID, "max_occurences", 15, "append_to_db", 1); +end + +% Set up a waitbar to monitor progress +h = waitbar(0, 'Processing DSP runs...'); +while ~all(strcmp({futures.State}, 'finished')) + finishedCount = sum(strcmp({futures.State}, 'finished')); + waitbar(finishedCount / nTasks, h); + pause(0.1); +end +delete(h); + +fprintf('All DSP runs processed.\n'); diff --git a/projects/HighSpeedExperiment_2024/auswertung MPI/dsp_run_id.m b/projects/HighSpeedExperiment_2024/auswertung MPI/dsp_run_id.m new file mode 100644 index 0000000..ebb7dfc --- /dev/null +++ b/projects/HighSpeedExperiment_2024/auswertung MPI/dsp_run_id.m @@ -0,0 +1,194 @@ +function [output] = dsp_run_id(run_id,options) + +arguments + run_id + options.append_to_db = 0; + options.max_occurences = 4; + options.parameters = struct(); +end + +basePath = 'C:\Users\Silas\Documents\MATLAB\Datensätze\sioe_labor\'; +database = DBHandler("pathToDB",[basePath,'silas_labor.db']); + +filterParams = database.tables; +filterParams.Configurations = struct('run_id', run_id); + +selectedFields = {'Runs.run_id','Runs.tx_bits_path', 'Runs.tx_symbols_path', 'Runs.rx_sync_path','Runs.rx_raw_path',... + 'Configurations.db_mode','Configurations.pam_level','Configurations.bitrate','Configurations.symbolrate','Configurations.fiber_length','Configurations.wavelength','Configurations.precomp_amp','Measurements.power_rop','Configurations.v_bias',... + 'Configurations.interference_attenuation'}; + +[dataTable,sql_query] = database.queryDB(filterParams, selectedFields); +[~, uniqueIdx] = unique(dataTable.run_id); % Get unique run_id indices +dataTable = dataTable(uniqueIdx,:); % Extract unique configurations for each run_id + +fsym = dataTable.symbolrate; +M = double(dataTable.pam_level); +duob_mode = db_mode(dataTable.db_mode); + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +len_tr = 4096*2; + +vnle_order1 = 50; +vnle_order2 = 5; +vnle_order3 = 5; + +dfe_order = [0 0 0]; + +pf_ncoeffs = 1; + +mu_ffe1 = 0.0001; +mu_ffe2 = 0.0008; +mu_ffe3 = 0.001; +mu_dfe = 0.0004; +mu_dc = 0.00; + +mu_ffe = [mu_ffe1 mu_ffe2 mu_ffe3]; +vnle_order=[vnle_order1,vnle_order2,vnle_order3]; + +% Overwrite default parameters if given in options.parameters +paramStruct = options.parameters; +if ~isempty(paramStruct) + paramNames = fieldnames(paramStruct); + for i = 1:numel(paramNames) + thisName = paramNames{i}; + thisValue = paramStruct.(thisName); + eval([thisName ' = thisValue;']); + end +end + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +eq_ = EQ("Ne",vnle_order,"Nb",dfe_order,"training_length",len_tr,"training_loops",5,"dd_loops",5,"K",2,"DCmu",mu_dc,"DDmu",[mu_ffe mu_dfe],"DFEmu",0.005,"FFEmu",0,"plotfinal",0,"ideal_dfe",1); +pf_ = Postfilter("ncoeff",pf_ncoeffs,"useBurg",1); +mlse_ = MLSE_viterbi("duobinary_output",0,'M',M,'trellis_states',PAMmapper(M,0).levels); +mlse_db_ = MLSE_viterbi("DIR",[1,1],"duobinary_output",0,"M",M,"trellis_states",PAMmapper(M,0).levels); +eq_post = FFE("epochs_tr",5,"epochs_dd",5,"len_tr",4096*2,"mu_dd",1e-4,"mu_tr",0,"order",2001,"sps",1,"decide",0); + +output = struct(); +vnle_pf_package = {}; +vnle_dfe_package = {}; +dbtgt_package = {}; + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Tx_bits = load([basePath, char(dataTable.tx_bits_path)]); +Tx_bits = Tx_bits.Bits; +Symbols_mapped = PAMmapper(M,0).map(Tx_bits); +Symbols_mapped.fs = dataTable.symbolrate; + +Symbols = load([basePath, char(dataTable.tx_symbols_path)]); +Symbols = Symbols.Symbols; + +Scpe_load = load([basePath, char(dataTable.rx_sync_path)]); +Scpe_cell = Scpe_load.S; +[~,~,found]=Scpe_cell{2}.tsynch("reference",Symbols,"fs_ref",dataTable.symbolrate,"debug_plots",0); + +if ~found + Raw_signal = load([basePath, char(dataTable.rx_raw_path(1))]); + Raw_signal = Raw_signal.Scpe_sig_raw; + [~,Scpe_cell,found] =Raw_signal.tsynch("reference",Symbols,"fs_ref",dataTable.symbolrate,"debug_plots",0); +end + +if ~found + if length(Symbols_mapped.signal) == sum(Symbols_mapped.signal == Symbols.signal) + warning('Could not synchronize the received signal with the stored symbols!') + else + [~,Scpe_cell,found] =Raw_signal.tsynch("reference",Symbols_mapped,"fs_ref",dataTable.symbolrate,"debug_plots",0); + end + if ~found + warning('Could not synchronize the received signal with the stored symbols!') + end +end + +proc_occ = min(options.max_occurences,length(Scpe_cell)); +for occ = 1:proc_occ + + Scpe_sig = Scpe_cell{occ}; + + %%%%%% Sample to 2x fsym %%%%%% + Scpe_sig = Scpe_sig.resample("fs_out",2*fsym); + + %%%%%% Sync Rx signal with reference %%%%%% + [Scpe_sig,~] = Scpe_sig.tsynch("reference",Symbols,"fs_ref",fsym,"debug_plots",0); + + Scpe_sig = Filter('filtdegree',4,"f_cutoff",Symbols.fs.*0.5,"fs",Scpe_sig.fs,"filterType",filtertypes.gaussian,"active",true).process(Scpe_sig); + + Scpe_sig = Scpe_sig - mean(Scpe_sig.signal); + + % Scpe_sig.plot("displayname",'Scope Signal','fignum',11); + % Scpe_sig.spectrum("displayname",'Raw Signal','fignum',20); + + if duob_mode ~= db_mode.db_encoded + + % %%%%% VNLE + DFE %%%% + if 0 + + eq_vnle_dfe = EQ("Ne",vnle_order,"Nb",[0,0,0],"training_length",len_tr,"training_loops",5,"dd_loops",5,"K",2,"DCmu",mu_dc,"DDmu",[mu_ffe mu_dfe],"DFEmu",0.005,"FFEmu",0,"plotfinal",0,"ideal_dfe",0); + eq_post = FFE("epochs_tr",5,"epochs_dd",5,"len_tr",4096*2,"mu_dd",1e-4,"mu_tr",0,"order",2001,"sps",1,"decide",0); + + [result] = vnle(eq_vnle_dfe,M,Scpe_sig,Symbols,Tx_bits,"precode_mode",duob_mode,"showAnalysis",1,"postFFE",[]); + vnle_dfe_package{occ} = result; + + end + + %%%%% VNLE + PF + MLSE %%%% + if 1 + + [result] = vnle_postfilter_mlse(eq_,pf_,mlse_,M,Scpe_sig,Symbols,Tx_bits,"precode_mode",duob_mode,'showAnalysis',0,"postFFE",[],"eth_style_symbol_mapping",0); + vnle_pf_package{occ} = result; + + if options.append_to_db + database.addProcessingResult(run_id,result.resultsMLSE, result.equalizerConfigMLSE); + database.addProcessingResult(run_id,result.resultsVNLE, result.equalizerConfigVNLE); + end + end + + %%%%% Duobinary Targeting %%%% + if 1 + [result] = duobinary_target(eq_, mlse_db_, M, Scpe_sig, Symbols, Tx_bits, "precode_mode", duob_mode,'showAnalysis',0,"postFFE",[]); + dbtgt_package{occ} = result; + + if options.append_to_db + database.addProcessingResult(run_id, result.resultsDBtgt, result.equalizerConfigDBtgt); + end + end + + fprintf("BER VNLE: %.2e | %.2e; BER MLSE: %.2e | %.2e; BER DB tgt: %.2e | %.2e \n",vnle_pf_package{occ}.resultsVNLE.BER,vnle_pf_package{occ}.resultsVNLE.BER_precoded ,vnle_pf_package{occ}.resultsMLSE.BER,vnle_pf_package{occ}.resultsMLSE.BER_precoded,dbtgt_package{occ}.resultsDBtgt.BER,dbtgt_package{occ}.resultsDBtgt.BER_precoded) + % fprintf("BER VNLE: %.2e | %.2e; BER MLSE: %.2e | %.2e \n",vnle_pf_package{occ}.resultsVNLE.BER,vnle_pf_package{occ}.resultsVNLE.BER_precoded ,vnle_pf_package{occ}.resultsMLSE.BER,vnle_pf_package{occ}.resultsMLSE.BER_precoded); + + + else + + %%%%%% %db signaling => db encoded %%%%% + if 1 + mlse_db_enc = MLSE_viterbi("DIR",[1,1],"duobinary_output",0,"M",M,"trellis_states",PAMmapper(M,0).levels); + eq_db_enc = EQ("Ne",vnle_order,"Nb",dfe_order,"training_length",len_tr,"training_loops",5,"dd_loops",5,"K",2,"DCmu",mu_dc,"DDmu",[mu_ffe mu_dfe],"DFEmu",0.005,"FFEmu",0,"plotfinal",0,"ideal_dfe",1); + [result] = duobinary_signaling(eq_db_enc, mlse_db_enc,M, Scpe_sig ,Symbols, Tx_bits); + dbenc_package{occ} = result; + + if options.append_to_db + database.addProcessingResult(run_id, result.resultsDBsignaling, result.equalizerConfigDBsignaling); + end + end + + fprintf("BER DB: %.2e \n",dbenc_package{occ}.resultsDBsignaling.BER); + + + end + + + % autoArrangeFigures; + disp('- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ') + fprintf('\n') + + +end + + +output.dataTable = dataTable; +output.vnle_dfe_package = vnle_dfe_package; +output.vnle_pf_package = vnle_pf_package; +output.dbtgt_package = dbtgt_package; + +end \ No newline at end of file diff --git a/projects/HighSpeedExperiment_2024/auswertung MPI/plot_from_database.m b/projects/HighSpeedExperiment_2024/auswertung MPI/plot_from_database.m index 6eba0dd..3093427 100644 --- a/projects/HighSpeedExperiment_2024/auswertung MPI/plot_from_database.m +++ b/projects/HighSpeedExperiment_2024/auswertung MPI/plot_from_database.m @@ -5,47 +5,67 @@ database = DBHandler("pathToDB",[basePath,'silas_labor.db']); filterParams = database.tables; filterParams.Configurations = struct( ... - 'bitrate', 336e9, ... - 'db_mode', 0, ... + 'bitrate', [], ... %[224,336,360,390,420,448] + 'db_mode', int32(db_mode.no_db), ... 'fiber_length', 1, ... 'interference_attenuation', [], ... 'interference_path_length', [], ... 'is_mpi', 1, ... 'pam_level', 4, ... - 'rop_attenuation', 0 ... + 'rop_attenuation', 0, ... + 'wavelength', 1310 ... ); -filterParams.EqualizerParameters.diff_precode = int32(db_mode.no_db); -filterParams.EqualizerParameters.equalizer_structure = int32(equalizer_structure.vnle); +% filterParams.EqualizerParameters.diff_precode = int32(db_mode.no_db); + filterParams.EqualizerParameters.equalizer_structure = int32(equalizer_structure.vnle); +% filterParams.EqualizerParameters.DCmu = 0.005; selectedFields = {'Configurations.run_id' 'Runs.rx_raw_path' 'Configurations.bitrate' 'Configurations.symbolrate' 'Configurations.pam_level' 'Configurations.db_mode' 'Configurations.rop_attenuation' 'Configurations.is_mpi' 'Configurations.interference_attenuation' 'EqualizerParameters.equalizer_structure' 'EqualizerParameters.diff_precode' 'EqualizerParameters.eq_id' 'Measurements.power_pd_in' 'Measurements.power_mpi_interference' 'Measurements.power_mpi_signal' 'Results.BER' 'Results.SNR' 'Results.GMI' 'Results.Alpha'}; [dataTable,sql_query] = database.queryDB(filterParams, selectedFields); fixedVars = {'run_id','eq_id','bitrate'}; -resultTable = groupIt(fixedVars,dataTable); - +dataTableGrpd = groupIt(fixedVars,dataTable); % Create a new figure -figure(1); +figure(3); hold on -unique_rates = unique(resultTable.bitrate); +unique_rates = unique(dataTable.bitrate); +cols = linspecer(8); for i = 1:numel(unique_rates) + % Plot BER vs. interference_attenuation - plot(resultTable.power_mpi_signal(resultTable.bitrate==unique_rates(i),:)-resultTable.power_mpi_interference(resultTable.bitrate==unique_rates(i),:), resultTable.BER(resultTable.bitrate==unique_rates(i),:), 'o-', 'LineWidth', 1.5); + % plot(dataTableGrpd.power_mpi_signal(dataTableGrpd.bitrate==unique_rates(i),:)-dataTableGrpd.power_mpi_interference(dataTableGrpd.bitrate==unique_rates(i),:), dataTableGrpd.BER(dataTableGrpd.bitrate==unique_rates(i),:), '-', 'LineWidth', 0.5,'Color',cols(i,:)); + + if filterParams.Configurations.is_mpi + sir = dataTable.power_mpi_signal(dataTable.bitrate==unique_rates(i),:)-dataTable.power_mpi_interference(dataTable.bitrate==unique_rates(i),:); + ber = dataTable.BER(dataTable.bitrate==unique_rates(i),:); + sc=scatter(dataTable.power_mpi_signal(dataTable.bitrate==unique_rates(i),:)-dataTable.power_mpi_interference(dataTable.bitrate==unique_rates(i),:), dataTable.BER(dataTable.bitrate==unique_rates(i),:), 'LineWidth', 0.5,'Marker','.','MarkerEdgeColor',cols(i+1,:)); + pair_one = {'Run ID', dataTable.run_id(dataTable.bitrate==unique_rates(i),:)}; + pair_two = {'Rate', dataTable.bitrate(dataTable.bitrate==unique_rates(i),:)}; + addDatatips(sc, pair_one, pair_two); + else + sc=scatter(62*ones(size( dataTableGrpd.BER(dataTableGrpd.bitrate==unique_rates(i),:))), dataTableGrpd.BER(dataTableGrpd.bitrate==unique_rates(i),:), 'LineWidth', 0.5,'Marker','o','MarkerEdgeColor',cols(i,:),'MarkerFaceColor',cols(i,:)); + pair_one = {'Run ID', dataTableGrpd.run_id(dataTableGrpd.bitrate==unique_rates(i),:)}; + pair_two = {'Rate', dataTableGrpd.bitrate(dataTableGrpd.bitrate==unique_rates(i),:)}; + addDatatips(sc, pair_one, pair_two); + end + + + end % Label the axes and add a title -xlabel('Interference Attenuation'); +xlabel('SIR in dB'); ylabel('BER'); -title('BER vs. Interference Attenuation'); - +title('BER vs. Signal to Interference Ratio'); +yline(3.8e-3,'LineWidth',1,'LineStyle','--','HandleVisibility','off'); % Enable grid for better readability grid on; beautifyBERplot; - +ylim([1e-4 0.5]); @@ -70,7 +90,7 @@ function resultTable = groupIt(fixedVars,dataTable) colData = dataTable.(varNames{j}); if isnumeric(colData) % For numeric data, compute the mean. - aggData{i, j} = mean(colData(idx)); + aggData{i, j} = min(colData(idx)); else % For non-numeric data, take the first entry. if iscell(colData) @@ -88,4 +108,43 @@ function resultTable = groupIt(fixedVars,dataTable) % Append the group count as a new column. resultTable.nRows = groupCount; -end \ No newline at end of file +end + + +function addDatatips(sc, varargin) +% addDatatips Adds custom data tip rows to a scatter plot. +% +% addDatatips(sc, pair1, pair2, ...) adds one or more custom rows to the +% data tip display of the scatter plot identified by sc. +% +% Each pair should be provided as a 1x2 cell array: {label, value}. +% The value can be a scalar or a vector. If a vector is provided, its length +% must match the number of scatter plot points. +% +% Example: +% sc = scatter(x, y, 'LineWidth', 1.5, 'Marker', 'o'); +% pair_one = {'Attenuation', attenuationVector}; +% addDatatips(sc, pair_one); + + numPoints = numel(sc.XData); + + for k = 1:length(varargin) + pair = varargin{k}; + + if ~iscell(pair) || numel(pair) ~= 2 + error('Each pair must be a 1x2 cell array: {label, value}.'); + end + + label = pair{1}; + value = pair{2}; + + % If value is a vector, ensure its length is either 1 or equal to the number of scatter points. + if isvector(value) && numel(value) ~= 1 && numel(value) ~= numPoints + error('The vector for "%s" must be a scalar or have %d elements matching the scatter data points.', label, numPoints); + end + + % Create a new data tip row using the provided label and vector. + newRow = dataTipTextRow(label, value); + sc.DataTipTemplate.DataTipRows(end+1) = newRow; + end +end diff --git a/projects/HighSpeedExperiment_2024/db_auswertung/rate_vs_ber.m b/projects/HighSpeedExperiment_2024/db_auswertung/rate_vs_ber.m new file mode 100644 index 0000000..e53d7c6 --- /dev/null +++ b/projects/HighSpeedExperiment_2024/db_auswertung/rate_vs_ber.m @@ -0,0 +1,186 @@ + + +basePath = 'C:\Users\Silas\Documents\MATLAB\Datensätze\sioe_labor\'; +database = DBHandler("pathToDB",[basePath,'silas_labor.db']); + +filterParams = database.tables; +filterParams.Configurations = struct( ... + 'bitrate', [], ... %[224,336,360,390,420,448] + 'db_mode', int32(db_mode.db_encoded), ... + 'fiber_length', 10, ... + 'interference_attenuation', [], ... + 'interference_path_length', [], ... + 'is_mpi', 0, ... + 'pam_level', 4, ... + 'rop_attenuation', 0, ... + 'wavelength', 1310 ... + ); + +% filterParams.EqualizerParameters.diff_precode = int32(db_mode.db_encoded); +% filterParams.EqualizerParameters.equalizer_structure = int32(equalizer_structure.vnle); +filterParams.EqualizerParameters.DCmu = 0.00; + +selectedFields = {'Configurations.run_id' 'Runs.rx_raw_path' 'Configurations.bitrate' 'Configurations.symbolrate' 'Configurations.pam_level'... + 'Configurations.db_mode' 'Configurations.rop_attenuation' 'Configurations.is_mpi' 'Configurations.interference_attenuation' ... + 'EqualizerParameters.equalizer_structure' 'EqualizerParameters.diff_precode' 'EqualizerParameters.eq_id' 'Measurements.power_pd_in' ... + 'Measurements.power_mpi_interference' 'Measurements.power_mpi_signal' 'Results.BER' 'Results.BER_precoded' 'Results.SNR' 'Results.GMI' 'Results.Alpha' 'Results.date_of_processing'}; + +[dataTable,sql_query] = database.queryDB(filterParams, selectedFields); + +fixedVars = {'eq_id','bitrate'}; +dataTableGrpd = groupIt(fixedVars,dataTable); + + +plotRealizations = 0; + +% Create a new figure +figure(); +hold on +unique_eq = unique(dataTable.eq_id); +cols = linspecer(8); +for i = 1:numel(unique_eq) + + idx = find(dataTableGrpd.eq_id == unique_eq(i), 1, 'first'); + equalizer_ = equalizer_structure(dataTableGrpd.equalizer_structure(idx)); + + + loop_filt = dataTableGrpd.eq_id==unique_eq(i); + + % Plot LINE: BER vs. interference_attenuation + switch equalizer_ + case equalizer_structure.vnle + bers = dataTableGrpd.BER(loop_filt,:); + case equalizer_structure.vnle_pf_mlse + bers = dataTableGrpd.BER(loop_filt,:); + case equalizer_structure.vnle_db_mlse + bers = dataTableGrpd.BER_precoded(loop_filt,:); + case equalizer_structure.db_encoded + bers = dataTableGrpd.BER(loop_filt,:); + end + + + name = sprintf('%s',equalizer_); + + p = plot(dataTableGrpd.bitrate(loop_filt,:).*1e-9, bers, '-', 'LineWidth', 0.5,'Color',cols(i,:),'DisplayName',name); + pair_one = {'Run ID', dataTableGrpd.run_id(loop_filt,:)}; + pair_two = {'Rate', dataTableGrpd.bitrate(loop_filt,:)}; + addDatatips(p, pair_one, pair_two); + xticks(unique(dataTableGrpd.bitrate(loop_filt,:).*1e-9)); + + % Plot SCATTERS: BER vs. interference_attenuation + + loop_filt = dataTable.eq_id==unique_eq(i); + if plotRealizations + switch equalizer_ + case equalizer_structure.vnle + bers = dataTable.BER(loop_filt,:); + case equalizer_structure.vnle_pf_mlse + bers = dataTable.BER(loop_filt,:); + case equalizer_structure.vnle_db_mlse + bers = dataTable.BER_precoded(loop_filt,:); + case equalizer_structure.db_encoded + bers = dataTable.BER(loop_filt,:); + end + + sc = scatter(dataTable.bitrate(loop_filt,:).*1e-9, bers, 'LineWidth', 0.5,'Marker','*','MarkerEdgeColor',cols(i,:),'HandleVisibility','off'); + pair_one = {'Run ID', dataTable.run_id(loop_filt,:)}; + pair_two = {'Rate', dataTable.bitrate(loop_filt,:)}; + addDatatips(sc, pair_one, pair_two); + xticks(unique(dataTable.bitrate(loop_filt,:).*1e-9)); + end + +end + + +% Label the axes and add a title +xlabel('Bitrate in Gbps'); +ylabel('BER'); +title('Line Rate vs. BER'); +yline(3.8e-3,'LineWidth',1,'LineStyle','--','HandleVisibility','off'); +% Enable grid for better readability +grid on; + +beautifyBERplot; +ylim([1e-4 0.5]); + + + +function resultTable = groupIt(fixedVars,dataTable) + + % Group by run_id and eq_id (adjust grouping keys as needed) + + [G, groupKeys] = findgroups(dataTable(:, fixedVars)); + + % Preallocate a cell array for aggregated data. + varNames = dataTable.Properties.VariableNames; + nVars = numel(varNames); + aggData = cell(height(groupKeys), nVars); + groupCount = zeros(height(groupKeys), 1); % To store the size of each group + + % Loop over each group. + for i = 1:height(groupKeys) + idx = (G == i); % Logical index for group i + groupCount(i) = sum(idx); % Count number of rows in this group + % For each variable in the table: + for j = 1:nVars + colData = dataTable.(varNames{j}); + if isnumeric(colData) + % For numeric data, compute the mean. + aggData{i, j} = min(colData(idx)); + else + % For non-numeric data, take the first entry. + if iscell(colData) + aggData{i, j} = colData{find(idx, 1)}; + else + aggData{i, j} = colData(find(idx, 1)); + end + end + end + end + + % Convert the aggregated cell array into a table. + resultTable = cell2table(aggData, 'VariableNames', varNames); + + % Append the group count as a new column. + resultTable.nRows = groupCount; + +end + + +function addDatatips(sc, varargin) +% addDatatips Adds custom data tip rows to a scatter plot. +% +% addDatatips(sc, pair1, pair2, ...) adds one or more custom rows to the +% data tip display of the scatter plot identified by sc. +% +% Each pair should be provided as a 1x2 cell array: {label, value}. +% The value can be a scalar or a vector. If a vector is provided, its length +% must match the number of scatter plot points. +% +% Example: +% sc = scatter(x, y, 'LineWidth', 1.5, 'Marker', 'o'); +% pair_one = {'Attenuation', attenuationVector}; +% addDatatips(sc, pair_one); + + numPoints = numel(sc.XData); + + for k = 1:length(varargin) + pair = varargin{k}; + + if ~iscell(pair) || numel(pair) ~= 2 + error('Each pair must be a 1x2 cell array: {label, value}.'); + end + + label = pair{1}; + value = pair{2}; + + % If value is a vector, ensure its length is either 1 or equal to the number of scatter points. + if isvector(value) && numel(value) ~= 1 && numel(value) ~= numPoints + error('The vector for "%s" must be a scalar or have %d elements matching the scatter data points.', label, numPoints); + end + + % Create a new data tip row using the provided label and vector. + newRow = dataTipTextRow(label, value); + sc.DataTipTemplate.DataTipRows(end+1) = newRow; + end +end diff --git a/projects/HighSpeedExperiment_2024/db_auswertung/realization_vs_ber.m b/projects/HighSpeedExperiment_2024/db_auswertung/realization_vs_ber.m new file mode 100644 index 0000000..b941680 --- /dev/null +++ b/projects/HighSpeedExperiment_2024/db_auswertung/realization_vs_ber.m @@ -0,0 +1,164 @@ + + +basePath = 'C:\Users\Silas\Documents\MATLAB\Datensätze\sioe_labor\'; +database = DBHandler("pathToDB",[basePath,'silas_labor.db']); + +filterParams = database.tables; +filterParams.Configurations = struct( ... + 'bitrate', 450e9, ... %[224,336,360,390,420,448] + 'db_mode', int32(db_mode.no_db), ... + 'fiber_length', 10, ... + 'interference_attenuation', [], ... + 'interference_path_length', [], ... + 'is_mpi', 0, ... + 'pam_level', 4, ... + 'rop_attenuation', 0, ... + 'wavelength', 1310 ... + ); + +% filterParams.EqualizerParameters.diff_precode = int32(db_mode.db_encoded); +% filterParams.EqualizerParameters.equalizer_structure = int32(equalizer_structure.vnle); +filterParams.EqualizerParameters.DCmu = 0.00; + +selectedFields = {'Configurations.run_id' 'Runs.rx_raw_path' 'Configurations.bitrate' 'Configurations.symbolrate' 'Configurations.pam_level'... + 'Configurations.db_mode' 'Configurations.rop_attenuation' 'Configurations.is_mpi' 'Configurations.interference_attenuation' ... + 'EqualizerParameters.equalizer_structure' 'EqualizerParameters.diff_precode' 'EqualizerParameters.eq_id' 'Measurements.power_pd_in' ... + 'Measurements.power_mpi_interference' 'Measurements.power_mpi_signal' 'Results.BER' 'Results.BER_precoded' 'Results.SNR' 'Results.GMI' 'Results.Alpha' 'Results.date_of_processing'}; + +[dataTable,sql_query] = database.queryDB(filterParams, selectedFields); + +fixedVars = {'eq_id','bitrate'}; +dataTableGrpd = groupIt(fixedVars,dataTable); + + +plotRealizations = 1; + +% Create a new figure +figure(); +hold on +unique_eq = unique(dataTable.eq_id); +cols = linspecer(8); + +for i = 1:numel(unique_eq) + + idx = find(dataTableGrpd.eq_id == unique_eq(i), 1, 'first'); + equalizer_ = equalizer_structure(dataTableGrpd.equalizer_structure(idx)); + + % Plot SCATTERS: timestamp vs. interference_attenuation + + loop_filt = dataTable.eq_id==unique_eq(i); + if plotRealizations + switch equalizer_ + case equalizer_structure.vnle + bers = dataTable.BER(loop_filt,:); + case equalizer_structure.vnle_pf_mlse + bers = dataTable.BER(loop_filt,:); + case equalizer_structure.vnle_db_mlse + bers = dataTable.BER_precoded(loop_filt,:); + case equalizer_structure.db_encoded + bers = dataTable.BER(loop_filt,:); + end + date_of_proc = datetime(dataTable.date_of_processing(loop_filt,:)); + + sc = scatter(date_of_proc, bers, 'LineWidth', 0.5,'Marker','*','MarkerEdgeColor',cols(i,:),'HandleVisibility','off'); + pair_one = {'Run ID', dataTable.run_id(loop_filt,:)}; + pair_two = {'Rate', dataTable.bitrate(loop_filt,:)}; + addDatatips(sc, pair_one, pair_two); + xticks(date_of_proc); + end + +end + + +% Label the axes and add a title +xlabel('Time of Processing'); +ylabel('BER'); +title('Line Rate vs. BER'); +yline(3.8e-3,'LineWidth',1,'LineStyle','--','HandleVisibility','off'); +% Enable grid for better readability +grid on; + +beautifyBERplot; +ylim([1e-4 0.5]); + + + +function resultTable = groupIt(fixedVars,dataTable) + + % Group by run_id and eq_id (adjust grouping keys as needed) + + [G, groupKeys] = findgroups(dataTable(:, fixedVars)); + + % Preallocate a cell array for aggregated data. + varNames = dataTable.Properties.VariableNames; + nVars = numel(varNames); + aggData = cell(height(groupKeys), nVars); + groupCount = zeros(height(groupKeys), 1); % To store the size of each group + + % Loop over each group. + for i = 1:height(groupKeys) + idx = (G == i); % Logical index for group i + groupCount(i) = sum(idx); % Count number of rows in this group + % For each variable in the table: + for j = 1:nVars + colData = dataTable.(varNames{j}); + if isnumeric(colData) + % For numeric data, compute the mean. + aggData{i, j} = min(colData(idx)); + else + % For non-numeric data, take the first entry. + if iscell(colData) + aggData{i, j} = colData{find(idx, 1)}; + else + aggData{i, j} = colData(find(idx, 1)); + end + end + end + end + + % Convert the aggregated cell array into a table. + resultTable = cell2table(aggData, 'VariableNames', varNames); + + % Append the group count as a new column. + resultTable.nRows = groupCount; + +end + + +function addDatatips(sc, varargin) +% addDatatips Adds custom data tip rows to a scatter plot. +% +% addDatatips(sc, pair1, pair2, ...) adds one or more custom rows to the +% data tip display of the scatter plot identified by sc. +% +% Each pair should be provided as a 1x2 cell array: {label, value}. +% The value can be a scalar or a vector. If a vector is provided, its length +% must match the number of scatter plot points. +% +% Example: +% sc = scatter(x, y, 'LineWidth', 1.5, 'Marker', 'o'); +% pair_one = {'Attenuation', attenuationVector}; +% addDatatips(sc, pair_one); + + numPoints = numel(sc.XData); + + for k = 1:length(varargin) + pair = varargin{k}; + + if ~iscell(pair) || numel(pair) ~= 2 + error('Each pair must be a 1x2 cell array: {label, value}.'); + end + + label = pair{1}; + value = pair{2}; + + % If value is a vector, ensure its length is either 1 or equal to the number of scatter points. + if isvector(value) && numel(value) ~= 1 && numel(value) ~= numPoints + error('The vector for "%s" must be a scalar or have %d elements matching the scatter data points.', label, numPoints); + end + + % Create a new data tip row using the provided label and vector. + newRow = dataTipTextRow(label, value); + sc.DataTipTemplate.DataTipRows(end+1) = newRow; + end +end diff --git a/projects/Messung_Zürich/AIR_simp_new.fig b/projects/Messung_Zürich/AIR_simp_new.fig new file mode 100644 index 0000000000000000000000000000000000000000..dbc22ccfa9a265ebae81613d5cd88de006bf4255 GIT binary patch literal 34267 zcmdSAQ*b6s^zJ*cZCev#V%xTD+s-7J*vZ7UZQHhO=Z)TE&-dSTs?OD^bGdid(^Xx4 z)m^pvSGAsAOHN2tR!Erm7XuTqoRBKLxs|OM9kHUVk*m3bvmH0FqKJl+JUbg5v52#o zk*k?0v4cG~vADApv7C`JF*6%6GYdB}GxslMViqQrU&Q}EN2I`y|2;sYHl zj*hG<8t;XeAyRUKj4F&ewp3n0Sb>ZqcC_vDPL7ZO$eFy=x%{|a*3Q;fEAMc-<@&hl zp1t;_OgeYlHhsX@Z5|q(JmR;0@QTslcN?NIb?y`Gz41RN>zW-^P5a)}^EEb?`0EuB z-*>mi1duXS6)ocWNx6h?2MY^>02j*=9#uJ?aFRFI$J9}n^ZLZ(b+Ydg?)Cc6%6swn zhL@jYA)2v0`?3AdbsL}=9ytPFkps93Xl%XTR`)u0%e{7Ke%>RY!{HGS;-cAgT(=EU zaDS2&h?oeI4OAKsSs@~^OJo#Q7!aZ15^&Q@=>i+d14K244D3@^Ekq;tMxL_GVhM3k zuDtAvxVT+oy$ltfv5;72|J)-*MYJEjE`pMMbAQj>VY{dbMre9`g9I@Ld9?9UlTs2V zhU1G8=c$GM4jY-O!9P8oyW5M%0AX&dtd2SG3MZa_{!t%#@mSvFziIvUPK|{9?cBWq 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 J?GJQ{9Uy|EU2*^b literal 0 HcmV?d00001 diff --git a/projects/Messung_Zürich/BER_ief.fig b/projects/Messung_Zürich/BER_ief.fig new file mode 100644 index 0000000000000000000000000000000000000000..51692ef9a8b00303b8843f6e74abbc191201763a GIT binary patch literal 28653 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 hlSBzR- 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%0Dnj6XK-f=?%#nq@(Ji=iw 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 literal 0 HcmV?d00001 diff --git a/projects/Messung_Zürich/NGMI_ief.fig b/projects/Messung_Zürich/NGMI_ief.fig new file mode 100644 index 0000000000000000000000000000000000000000..eab9017acefc058ec1b1520409e84d83f3315139 GIT binary patch literal 26923 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 d`aKBPk8B^vepVcbCE4{o;0UxUlp5pZDElzihU0 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