ecoc measurements
This commit is contained in:
@@ -19,7 +19,9 @@ end
|
||||
[eq_signal_sd,eq_noise] = eq_.process(rx_signal,tx_symbols);
|
||||
|
||||
if ~isempty(options.postFFE)
|
||||
tic
|
||||
[eq_signal_sd,eq_noise] = options.postFFE.process(eq_signal_sd,tx_symbols);
|
||||
toc
|
||||
end
|
||||
|
||||
eq_signal_hd = PAMmapper(M,0).quantize(eq_signal_sd);
|
||||
@@ -237,29 +239,32 @@ if options.showAnalysis
|
||||
|
||||
% fprintf(['VNLE EVM lvl: ',repmat('%.3f ',1,numel(evm_lvl)),' \n'],evm_lvl);
|
||||
|
||||
fprintf('VNLE BER: %.2e \n',ber_vnle);
|
||||
|
||||
fprintf('MLSE BER: %.2e \n',ber_mlse);
|
||||
% fprintf('VNLE BER: %.2e \n',ber_vnle);
|
||||
%
|
||||
% fprintf('MLSE BER: %.2e \n',ber_mlse);
|
||||
|
||||
figure(336);clf;
|
||||
showEQNoisePSD(eq_noise,"fignum",336,"displayname",'Residual Noise after VNLE','postfilter_taps',pf_.coefficients);
|
||||
|
||||
% figure(337);clf;
|
||||
% rx_signal.spectrum("normalizeTo0dB",1,"fignum",337,"displayname",'Rx Signal');
|
||||
|
||||
rx_signal.spectrum("normalizeTo0dB",1,"fignum",337,"displayname",'Rx Signal');
|
||||
% figure(338);clf;
|
||||
% showEQcoefficients('n1',eq_.e,'n2',eq_.e2,'n3',eq_.e3,"displayname",'Coefficients','fignum',338);
|
||||
|
||||
tx_symbols.spectrum("normalizeTo0dB",1,"fignum",337,'displayname','Tx Signal');
|
||||
if ~isempty(options.postFFE)
|
||||
showEQcoefficients('n1',options.postFFE.e,"displayname",'Coefficients','fignum',338);
|
||||
end
|
||||
|
||||
showLevelHistogram(eq_signal_sd,tx_symbols)
|
||||
% showLevelHistogram(mlse_sig_sd,tx_symbols)
|
||||
showEQfilter(eq_.e,eq_signal_sd.fs.*2);
|
||||
|
||||
showEQcoefficients('n1',eq_.e,'n2',eq_.e2,'n3',eq_.e3,"displayname",'Coefficients');
|
||||
figure(340);clf;
|
||||
eq_signal_sd.eye(eq_signal_sd.fs,M,"fignum",340);
|
||||
|
||||
showEQNoiseSNR(tx_symbols,eq_noise,"displayname",'vnle snr','fignum',101);
|
||||
figure(341);clf;
|
||||
showLevelHistogram(eq_signal_sd,tx_symbols,"fignum",341);
|
||||
|
||||
%%% EQ SNR Spectrum %230
|
||||
%snr
|
||||
|
||||
|
||||
% showErrorBurstCount(eq_signal_sd,tx_symbols)
|
||||
% autoArrangeFigures(3,3,2)
|
||||
|
||||
|
||||
end
|
||||
|
||||
@@ -53,8 +53,8 @@ function showEQcoefficients(options)
|
||||
|
||||
for i = 1:numSubplots
|
||||
subplot(1, numSubplots, i);
|
||||
stem(coeffs{i}, 'Color', options.color, 'LineWidth', 1, ...
|
||||
'Marker', '.', 'MarkerSize', 10);
|
||||
stem(coeffs{i}, 'Color', options.color, 'LineWidth', 0.1, ...
|
||||
'Marker', '.', 'MarkerSize', 1);
|
||||
title(titles{i});
|
||||
ylim([-1, 1]); % Set y-axis limits to [-1, 1]
|
||||
grid on;
|
||||
|
||||
@@ -14,7 +14,7 @@ function showEQfilter(coefficients,fs)
|
||||
H = H(1:half_nfft);
|
||||
|
||||
% Plot the magnitude and phase responses.
|
||||
figure;
|
||||
figure(339);
|
||||
|
||||
% Magnitude response (in dB)
|
||||
subplot(2,1,1);
|
||||
|
||||
@@ -15,7 +15,7 @@ function holdAndShowValue()
|
||||
'ButtonPushedFcn', @(src, event) closeWindow());
|
||||
|
||||
% Initialize the timer
|
||||
updateTimer = timer('ExecutionMode', 'fixedRate', 'Period', 1, ...
|
||||
updateTimer = timer('ExecutionMode', 'fixedRate', 'Period', 0.1, ...
|
||||
'TimerFcn', @(src, event) updatePowerValues());
|
||||
|
||||
% Start the timer
|
||||
|
||||
@@ -1,9 +1,34 @@
|
||||
% Define the precomp path
|
||||
precomp_path = "C:\Users\sioe\Documents\MATLAB\imdd_simulation\projects\ECOC_2025\";
|
||||
|
||||
precomp_path = "D:\kiel_dsp\imdd_simulation\projects\HighSpeed_ETH";
|
||||
precomp_filename = "lab_high_speed_nachtschichtmzm";
|
||||
% precomp_filename = "lab_high_speed";
|
||||
% precomp_filename = "lab_high_speed";
|
||||
% Step 1: Find all valid files (assume .mat files for ChannelFreqResp)
|
||||
fileList = dir(fullfile(precomp_path, '*.mat'));
|
||||
fileNames = {fileList.name};
|
||||
|
||||
freqresp = ChannelFreqResp("Nacq",1024,"Navg",64,"Ncp",63,'f_ref',92e9);
|
||||
freqresp.load('loadPath',precomp_path,'fileName',precomp_filename);
|
||||
freqresp.plot();
|
||||
% Check if any files found
|
||||
if isempty(fileNames)
|
||||
error('No valid .mat files found in the specified folder.');
|
||||
end
|
||||
|
||||
% Step 2: Let user select which files to plot
|
||||
[selection, ok] = listdlg( ...
|
||||
'PromptString', 'Select Transfer Functions to Plot:', ...
|
||||
'SelectionMode', 'multiple', ...
|
||||
'ListString', fileNames);
|
||||
|
||||
% Check if user pressed OK
|
||||
if ~ok || isempty(selection)
|
||||
disp('No files selected. Exiting.');
|
||||
return;
|
||||
end
|
||||
|
||||
% Step 3: Loop over selected files and plot
|
||||
for idx = selection
|
||||
precomp_filename = erase(fileNames{idx}, '.mat'); % Remove .mat extension
|
||||
|
||||
freqresp = ChannelFreqResp("Nacq",1024,"Navg",64,"Ncp",63,'f_ref',92e9);
|
||||
freqresp.load('loadPath', precomp_path, 'fileName', precomp_filename);
|
||||
|
||||
fprintf('Plotting: %s\n', precomp_filename);
|
||||
freqresp.plot();
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user