plot_ber.m 3.16 KB
% file: plot_ber 
% author: florian.kaltenberger@eurecom.fr
% purpose: this script plots the figures for the PIMRC 2009 paper

close all
clear all

addpath('import_filter');

%%
path = '/extras/kaltenbe/EMOS/data/20090505_DualStream_Lab/';
figpath = '/extras/kaltenbe/EMOS/data/20090505_DualStream_Lab/figs';
d = dir(path);
idx_vec = [1 2 4];

for i=1:length(idx_vec)
%%    
idx = idx_vec(i);
[estimates, gps_data, NFrames] = load_estimates2_no_channel(fullfile(path,d(idx+3).name));
disp(idx);

SNR_edges = [-Inf 0:3:45 Inf];
SNR_edges1 = [-Inf 27:6:45 Inf];

%%
SNR = 10*log10(estimates.rx_power./estimates.n0_power);
Nerrors = zeros(2,length(SNR_edges));
BER = zeros(2,length(SNR_edges));

for c=1:2
    [n,bin] = histc(squeeze(mean(SNR(c+1,:,:),2)),SNR_edges);
    figure(c)
    hold off
    bar(SNR_edges(2:end-1),n(2:end-1),'histc');
    xlabel('SNR')
    ylabel('Count')
    title(sprintf('SNR Histogram for Stream %d',c));
    for b=1:length(SNR_edges)
        Nerrors(c,b) = sum(estimates.crc_status(c,bin==b)==-1);
        BER(c,b) = Nerrors(c,b)/sum(bin==b);
    end
end

%%
h_fig = figure(3);
hold off
semilogy(SNR_edges-1.5,BER.');
grid on
xlabel('SNR');
ylabel('FER');
legend('Stream 1','Stream 2')
title(sprintf('RX mode = %d',mode(estimates.rx_mode)));
saveas(h_fig,fullfile(figpath,sprintf('FER1+2_idx%d.eps',idx)),'epsc2');


%%
figure(4)
hold off
[n2,bin2] = my_hist3(squeeze(mean(SNR(2:3,:,:),2)).','Edges',{SNR_edges1, SNR_edges});
% size(n2) = [SNR_CH1, SNR_CH2]
%hist3(squeeze(mean(SNR(2:3,:,:),2)).','Edges',{SNR_edges, SNR_edges});
xlabel('SNR stream 1')
ylabel('SNR stream 2')
zlabel('Count')
Nerrors1 = accumarray(bin2,estimates.crc_status(1,:)==-1,size(n2));
Nerrors2 = accumarray(bin2,estimates.crc_status(2,:)==-1,size(n2));
FER1 = Nerrors1./n2;
FER2 = Nerrors2./n2;

%%
h_fig = figure(5);
plot_style={'r-','g-','b-','k-'; ...
            'r--','g--','b--','k--'; ...
            'r:','g:','b:','k:'};
k=1;
for b=2:3
    semilogy(SNR_edges,FER1(b,:),plot_style{i,k},'Linewidth',2)
    legend_str{i,k} = sprintf('idx %d, SNR Stream 1 = %ddB',idx,SNR_edges1(b));
    k=k+1;
    hold on
end
legend_str2=legend_str.';
legend(legend_str2{:},'Location','SouthWest')
xlabel('SNR Stream 2','Fontsize',14)
ylabel('FER Stream 2','Fontsize',14)
grid on
saveas(h_fig,fullfile(figpath,sprintf('FER1_idx%d.eps',idx)),'epsc2');

if 0
%%
h_fig = figure(6);
hold off
surf(SNR_edges(2:end-1),SNR_edges1(2:end-1),FER1(2:end-1,2:end-1));
set(gca,'zscale','log')
xlabel('SNR stream 2')
ylabel('SNR stream 1')
zlabel('FER1');
saveas(h_fig,fullfile(figpath,sprintf('FER1_3D_idx%d.eps',idx)),'epsc2');

%%
h_fig = figure(7);
hold off
surf(SNR_edges(2:end-1),SNR_edges1(2:end-1),FER2(2:end-1,2:end-1));
set(gca,'zscale','log')
xlabel('SNR stream 2')
ylabel('SNR stream 1')
zlabel('FER2');
saveas(h_fig,fullfile(figpath,sprintf('FER2_3D_idx%d.eps',idx)),'epsc2');

%%
h_fig = figure(8);
hold off
fer2 = sum(reshape(estimates.crc_status(2,:),100,[])==-1,1)./100;
fer1 = sum(reshape(estimates.crc_status(1,:),100,[])==-1,1)./100;
plot(fer1,'r.')
hold on
plot(fer2,'b.')
grid on
xlabel('Distance')
ylabel('FER')
legend('Stream 1','Stream 2')
saveas(h_fig,fullfile(figpath,sprintf('FER1+2_dist_idx%d.eps',idx)),'epsc2');
end

%%
end