-
Notifications
You must be signed in to change notification settings - Fork 0
/
codedV2V.m
80 lines (72 loc) · 2.82 KB
/
codedV2V.m
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
% close all;
clear
addpath('Functions');
addpath('Data');
load('dataForCodedCases41.mat');
%expecting a column vector (0-32)
fakeData1 = ceil(32*rand([4000,1]));
fakeData2 = ceil(32*rand([4000,1]));
fakeData3 = ceil(32*rand([4000,1]));
fakeData4 = ceil(32*rand([4000,1]));
fakeData5 = ceil(32*rand([4000,1]));
for j = [16]%1:10:length(snr)
%move incomming data into variables
snrIndex = j;
takeEveryXSamples = 1;
carriersPerLocationDataRun1 = cap_foxtrot(1:takeEveryXSamples:end,snrIndex);
carriersPerLocationDataRun2 = cap_golf(1:takeEveryXSamples:end,snrIndex);
carriersPerLocationDataRun3 = cap_hotel(1:takeEveryXSamples:end,snrIndex);
carriersPerLocationDataRun4 = cap_india(1:takeEveryXSamples:end,snrIndex);
carriersPerLocationDataRun5 = cap_juliet(1:takeEveryXSamples:end,snrIndex);
%extract the RM code curves
r = 2;
m = 5;
kBits = 0;
for i = 0 : r
kBits = kBits + nchoosek(m,i);
end
RMWeights = RMWeightHier(r,m,false);
numOfLocations = length(carriersPerLocationDataRun1);
%initialize variables
revealedBitsRun1 = zeros(1,numOfLocations);
revealedBitsRun2 = zeros(1,numOfLocations);
revealedBitsRun3 = zeros(1,numOfLocations);
revealedBitsRun4 = zeros(1,numOfLocations);
revealedBitsRun5 = zeros(1,numOfLocations);
%look up bits of equivocation
for i = 1:numOfLocations
revealedBitsRun1(1,i) = RMWeights(carriersPerLocationDataRun1(i,1)+1);
revealedBitsRun2(1,i) = RMWeights(carriersPerLocationDataRun2(i,1)+1);
revealedBitsRun3(1,i) = RMWeights(carriersPerLocationDataRun3(i,1)+1);
revealedBitsRun4(1,i) = RMWeights(carriersPerLocationDataRun4(i,1)+1);
revealedBitsRun5(1,i) = RMWeights(carriersPerLocationDataRun5(i,1)+1);
end
%create array for moving average
movingAve = [];
averageOver = 1;
for i = 1:averageOver
movingAve(i) = 1/averageOver;
end
%calculate moving average and give bobs worst case and Eves best
revealedBitsAveRun1 = conv(revealedBitsRun1,movingAve);
revealedBitsAveRun2 = conv(revealedBitsRun2,movingAve);
revealedBitsAveRun3 = conv(revealedBitsRun3,movingAve);
revealedBitsAveRun4 = conv(revealedBitsRun4,movingAve);
revealedBitsAveRun5 = conv(revealedBitsRun5,movingAve);
%plot data
figure(2);%21+j);
hold on;
plot(revealedBitsAveRun1, '-');
plot(revealedBitsAveRun2, '-');
plot(revealedBitsAveRun3, '-');
plot(revealedBitsAveRun4, '-');
plot(revealedBitsAveRun5, '-');
legend('Bob','Eve1','Eve2','Eve3','Eve4');
hold off;
grid on;
xlabel("Alice's Location");
ylabel('Equivocation in bits');
title(sprintf('V2V Coded With RM(%d,5) and \nMoving Average Over %d Locations at %.2f dB',...
r,averageOver, 10*log10(snr(snrIndex))));
ylim([0 kBits+1]);
end