Add PAMmapper bit mapping and Gray penalty visualization

This commit is contained in:
Silas Oettinghaus
2026-03-26 16:04:30 +01:00
parent c135cb76b1
commit 10a205f231
7 changed files with 180 additions and 36 deletions

View File

@@ -17,30 +17,42 @@ if 1
uloops = struct;
uloops.precomp = [0];
uloops.bitrate = [300].*1e9; %[300,330,360,390,420,450,480] [224,336,360,390,420,448] for MPI
uloops.fsym = 180e9;
% uloops.bitrate = 100e9;
% uloops.laser_wavelength = [1293,1297.5,1302,1306.5,1310,1313.4,1318,1322.7,1327.4];
uloops.laser_wavelength = [1293];
uloops.M = [4];
uloops.laser_wavelength = [1310];
uloops.M = [6];
uloops.link_length = 1;
% uloops.link_length = [0:2:10]; % 1,2,3,5,6,8,10
uloops.channel_alpha = [0.5];
uloops.channel_alpha = [0.8];
uloops.duob_mode = db_mode.no_db;
uloops.decoding_mode = "memoryless";
uloops.channel_mode = "awgn_alphad";
uloops.channel_snr_dB = [20:-2:0];
uloops.channel_mode = "awgn_alphad"; %awgn_alphad
uloops.channel_snr_dB = [20];
uloops.rop = -6;
wh = DataStorage(uloops);
wh.addStorage("ber");
wh = submit_handle(@imdd_model,wh,"parallel",1);
wh = submit_handle(@imdd_model,wh,"parallel",0);
end
%%
figure
hold on
if isfield(uloops, 'fsym') && isfield(uloops, 'bitrate')
error('Define only one of uloops.fsym or uloops.bitrate.');
elseif isfield(uloops, 'fsym')
rateLookup = uloops.fsym;
elseif isfield(uloops, 'bitrate')
rateLookup = uloops.bitrate;
else
error('Define either uloops.fsym or uloops.bitrate.');
end
for alpha = uloops.channel_alpha
a=wh.getStoValue('ber',0, [300].*1e9 , 1293, 4, uloops.link_length,alpha,uloops.duob_mode,uloops.decoding_mode,uloops.channel_mode,uloops.channel_snr_dB);
a=wh.getStoValue('ber',0, rateLookup, uloops.laser_wavelength, uloops.M, uloops.link_length,alpha,uloops.duob_mode,uloops.decoding_mode,uloops.channel_mode,uloops.channel_snr_dB);
gmi_ffe = cellfun(@(x) x.ffe_results.metrics.GMI, a);
alpha_ffe = cellfun(@(x) x.ffe_results.metrics.Alpha, a);