1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
% 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