Add Datastorage
This commit is contained in:
151
Classes/Warehouse_class/functions/fwm_plots/plotHistogram.m
Normal file
151
Classes/Warehouse_class/functions/fwm_plots/plotHistogram.m
Normal file
@@ -0,0 +1,151 @@
|
||||
function plotHistogram(wh,plotJob)
|
||||
|
||||
|
||||
fig = findall(groot, 'Type', 'figure', 'Name', plotJob.figName);
|
||||
|
||||
if isvalid(fig)
|
||||
figure(fig)
|
||||
fig = get(fig);
|
||||
AxesMain = fig.CurrentAxes;
|
||||
hold on
|
||||
else
|
||||
fig = figure('name',char(plotJob.figName));
|
||||
AxesMain = gca;
|
||||
hold on
|
||||
end
|
||||
|
||||
col = plotJob.color;
|
||||
|
||||
% we want to fetch all realizations
|
||||
realization = wh.parameter.realization.values(1:end);
|
||||
|
||||
% get all xAxis values
|
||||
xAxis = wh.parameter.p_out.values;
|
||||
|
||||
|
||||
% Fetch Data from Warehouse
|
||||
for xl = 1:numel(xAxis)
|
||||
p_out = xAxis(xl);
|
||||
if string(plotJob.dataStatArg) == "Worst"
|
||||
ber(xl) = max(wh.getStoValue('ber',plotJob.l,plotJob.d,plotJob.sgm,string(plotJob.pol),plotJob.p_in,p_out,plotJob.pmd,plotJob.gamma,realization,string(plotJob.channelplan),string(plotJob.dsp)),[],'all');
|
||||
linew = 2.0;
|
||||
markersz = 3;
|
||||
linestyle = '-';
|
||||
elseif string(plotJob.dataStatArg) == "AVG"
|
||||
ber(xl) = mean(wh.getStoValue('ber',plotJob.l,plotJob.d,plotJob.sgm,string(plotJob.pol),plotJob.p_in,p_out,plotJob.pmd,plotJob.gamma,realization,string(plotJob.channelplan),string(plotJob.dsp)),'all');
|
||||
linew = 2.0;
|
||||
markersz = 3;
|
||||
linestyle = ':';
|
||||
elseif string(plotJob.dataStatArg) == "Best"
|
||||
ber(xl) = min(wh.getStoValue('ber',plotJob.l,plotJob.d,plotJob.sgm,string(plotJob.pol),plotJob.p_in,p_out,plotJob.pmd,plotJob.gamma,realization,string(plotJob.channelplan),string(plotJob.dsp)),[],'all');
|
||||
linew = 2.0;
|
||||
markersz = 3;
|
||||
linestyle = ':';
|
||||
|
||||
elseif string(plotJob.dataStatArg) == "All Channels; mean(PMD Realizations)"
|
||||
tmp = wh.getStoValue('ber',plotJob.l,plotJob.d,plotJob.sgm,string(plotJob.pol),plotJob.p_in,p_out,plotJob.pmd,plotJob.gamma,realization,string(plotJob.channelplan),string(plotJob.dsp));
|
||||
|
||||
if numel(tmp(tmp==0)) ~= 0
|
||||
disp('Removed all zero values!');
|
||||
tmp(tmp==0) = NaN;
|
||||
end
|
||||
ber(:,xl) = mean(tmp,1,"omitnan").';
|
||||
|
||||
linew = 0.7;
|
||||
markersz = 2;
|
||||
linestyle = '-';
|
||||
|
||||
elseif string(plotJob.dataStatArg) == "All Channels ;All PMD Realizations"
|
||||
|
||||
|
||||
|
||||
tmp = reshape(wh.getStoValue('ber',plotJob.l,plotJob.d,plotJob.sgm,string(plotJob.pol),plotJob.p_in,p_out,plotJob.pmd,plotJob.gamma,realization,string(plotJob.channelplan),string(plotJob.dsp)).',[],1);
|
||||
ber(1:size(tmp,1),xl) = tmp;
|
||||
|
||||
linew = 0.3;
|
||||
markersz = 2;
|
||||
linestyle = ':';
|
||||
end
|
||||
end
|
||||
|
||||
disp('Removed all zero values!');
|
||||
ber(ber==0) = NaN;
|
||||
if ~anynan(ber)
|
||||
[xAxis,ber] = interpCurve(xAxis, ber);
|
||||
end
|
||||
|
||||
% plot FEC Crossing as histogram
|
||||
|
||||
hdfec = 3.8e-3.*ones(size(xAxis));
|
||||
S = [];
|
||||
for i = 1:size(ber,1)
|
||||
a = InterX([hdfec;xAxis],[ber(i,:);xAxis]);
|
||||
if ~isempty(a)
|
||||
S(:,i) = a;
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
%% SUB 1
|
||||
AxesMain = subplot(2,1,1);
|
||||
|
||||
hold on
|
||||
|
||||
if ~isempty(S)
|
||||
histogram(S(end,:),300,'Normalization','probability','FaceColor',col,'EdgeColor',col,'Parent',AxesMain,'DisplayName',[plotJob.dataStatArg,' Ch.: ', plotJob.displayname],'FaceAlpha',0.4,'EdgeAlpha',0.4);
|
||||
end
|
||||
|
||||
xlim([-3 ,9 ]);
|
||||
ylim([0 .10]);
|
||||
|
||||
% Figure Settings
|
||||
title(AxesMain,['$P_{in}:$ ',num2str(plotJob.p_in-9), 'dBm; L : ', num2str(plotJob.l),'Km'],'Interpreter','latex');
|
||||
|
||||
xlabel(AxesMain,plotJob.xAxisLabel,'Interpreter','latex');
|
||||
|
||||
ylabel('PDF')
|
||||
|
||||
grid(AxesMain,'on');
|
||||
|
||||
grid(AxesMain,'minor');
|
||||
|
||||
%legend(AxesMain,'Interpreter','latex');
|
||||
|
||||
fontsize(AxesMain,24,"pixels")
|
||||
|
||||
hold off
|
||||
|
||||
|
||||
%% SUB 2
|
||||
AxesMain = subplot(2,1,2);
|
||||
|
||||
if ~isempty(S)
|
||||
hold on
|
||||
|
||||
[f1,x1]=ecdf(S(end,:));
|
||||
plot(x1,f1,'r','LineWidth',3, 'Color',col,'DisplayName',[plotJob.dataStatArg,' Ch.: ', plotJob.displayname]);
|
||||
end
|
||||
xlim([-3 ,9 ]);
|
||||
ylim([0 1]);
|
||||
% Figure Settings
|
||||
title(AxesMain,['$P_{in}:$ ',num2str(plotJob.p_in-9), 'dBm; L : ', num2str(plotJob.l),'Km'],'Interpreter','latex');
|
||||
|
||||
xlabel(AxesMain,plotJob.xAxisLabel,'Interpreter','latex');
|
||||
|
||||
ylabel('CDF')
|
||||
|
||||
grid(AxesMain,'on');
|
||||
|
||||
grid(AxesMain,'minor');
|
||||
|
||||
fontsize(AxesMain,24,"pixels")
|
||||
|
||||
%legend(AxesMain,'Interpreter','latex');
|
||||
|
||||
fig.Position = plotJob.Position;
|
||||
|
||||
hold off
|
||||
|
||||
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user