-
Notifications
You must be signed in to change notification settings - Fork 0
/
getalphabet.m
100 lines (98 loc) · 4.93 KB
/
getalphabet.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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
function alphabet = getalphabet(modulation)
%%GETALPHABET Generate set of alpabet according to modulation type
%
% alphabet = getalphabet(modulation) returns an array of modulation
% alphabet defined by modulation with unit power
%
% Example: Generation array of alphabet for 4-QAM
%
% alphabet = getalphabet('4qam')
%
% centroid =
%
% 1.0000 + 1.0000i
% -1.0000 + 1.0000i
% -1.0000 - 1.0000i
% 1.0000 - 1.0000i
%
% See also gen2psk, gen4qam
%
% Copyright (C) 2013 Zhechen Zhu
% This file is part of Zhechen Zhu's AMC toolbox 0.2
%
% Update (version no.): modification (editor)
%% Initialize raw centroids
switch modulation
case '2pam'
alphabet = [1; -1];
case '4pam'
alphabet = [-3; -1; 1; 3];
case '8pam'
alphabet = [-7; -5; -3; -1; 1; 3; 5; 7];
case '2psk'
alphabet = [j; -j];
case '4psk'
alphabet = [1; j; -1; -j];
case '8psk'
alphabet = [sqrt(2);1+j;sqrt(2)*j;-1+j;-sqrt(2);-1-j;-sqrt(2)*j;1-j];
case '16psk'
alphabet = [sqrt(2);1.3065+0.54*j;1+j;0.54+1.3065*j;sqrt(2)*j;...
-0.54+1.3065*j;-1+j;-1.3065+0.54*j;-sqrt(2);-1.3065-0.54*j;...
-1-j;-0.54-1.3065*j;-sqrt(2)*j;0.54-1.3065*j;1-j;1.3065-0.54*j];
case '4pam'
alphabet = [1; 3; -1; -3];
case '8pam'
alphabet = [1; 3; 5; 7; -1; -3; -5; -7];
case '4qam'
alphabet = [1+j; -1+j; -1-j; 1-j];
case '16qam'
alphabet = [3+3j;3+j;3-j;3-3j;1+3j;1+j;1-j;1-3j;-1+3j;...
-1+j;-1-j;-1-3j;-3+3j;-3+j;-3-j;-3-3j];
case '64qam'
alphabet = [1.0+j*1.0;3.0+j*1.0;1.0+j*3.0;3.0+j*3.0;7.0+...
j*1.0;5.0+j*1.0;7.0+j*3.0;5.0+j*3.0;1.0+j*7.0;3.0+j*7.0;...
1.0+j*5.0;3.0+j*5.0;7.0+j*7.0;5.0+j*7.0;7.0+j*5.0;5.0+j*...
5.0;1.0-j*1.0;1.0-j*3.0;3.0-j*1.0;3.0-j*3.0;1.0-j*7.0;...
1.0-j*5.0;3.0-j*7.0;3.0-j*5.0;7.0-j*1.0;7.0-j*3.0;5.0-j*...
1.0;5.0-j*3.0;7.0-j*7.0;7.0-j*5.0;5.0-j*7.0;5.0-j*5.0;-...
1.0+j*1.0;-1.0+j*3.0;-3.0+j*1.0;-3.0+j*3.0;-1.0+j*7.0;-...
1.0+j*5.0;-3.0+j*7.0;-3.0+j*5.0;-7.0+j*1.0;-7.0+j*3.0;...
-5.0+j*1.0;-5.0+j*3.0;-7.0+j*7.0;-7.0+j*5.0;-5.0+j*7.0;-...
5.0+j*5.0;-1.0-j*1.0;-3.0-j*1.0;-1.0-j*3.0;-3.0-j*3.0;-...
7.0-j*1.0;-5.0-j*1.0;-7.0-j*3.0;-5.0-j*3.0;-1.0-j*7.0;-...
3.0-j*7.0;-1.0-j*5.0;-3.0-j*5.0;-7.0-j*7.0;-5.0-j*7.0;-...
7.0-j*5.0;-5.0-j*5.0];
case '256qam'
alphabet = [1+1*j;1+3*j;1+5*j;1+7*j;1+9*j;1+11*j;1+13*j;1+15*j;1-1*j;1-3*j;1-5*j;...
1-7*j;1-9*j;1-11*j;1-13*j;1-15*j;3+1*j;3+3*j;3+5*j;3+7*j;3+9*j;3+11*j;...
3+13*j;3+15*j;3-1*j;3-3*j;3-5*j;3-7*j;3-9*j;3-11*j;3-13*j;3-15*j;...
5+1*j;5+3*j;5+5*j;5+7*j;5+9*j;5+11*j;5+13*j;5+15*j;5-1*j;5-3*j;5-5*j;...
5-7*j;5-9*j;5-11*j;5-13*j;5-15*j;7+1*j;7+3*j;7+5*j;7+7*j;7+9*j;7+11*j;...
7+13*j;7+15*j;7-1*j;7-3*j;7-5*j;7-7*j;7-9*j;7-11*j;7-13*j;7-15*j;...
9+1*j;9+3*j;9+5*j;9+7*j;9+9*j;9+11*j;9+13*j;9+15*j;9-1*j;9-3*j;9-5*j;...
9-7*j;9-9*j;9-11*j;9-13*j;9-15*j;11+1*j;11+3*j;11+5*j;11+7*j;11+9*j;...
11+11*j;11+13*j;11+15*j;11-1*j;11-3*j;11-5*j;11-7*j;11-9*j;11-11*j;...
11-13*j;11-15*j;13+1*j;13+3*j;13+5*j;13+7*j;13+9*j;13+11*j;13+13*j;...
13+15*j;13-1*j;13-3*j;13-5*j;13-7*j;13-9*j;13-11*j;13-13*j;13-15*j;...
15+1*j;15+3*j;15+5*j;15+7*j;15+9*j;15+11*j;15+13*j;15+15*j;15-1*j;...
15-3*j;15-5*j;15-7*j;15-9*j;15-11*j;15-13*j;15-15*j;-1+1*j;-1+3*j;...
-1+5*j;-1+7*j;-1+9*j;-1+11*j;-1+13*j;-1+15*j;-1-1*j;-1-3*j;-1-5*j;...
-1-7*j;-1-9*j;-1-11*j;-1-13*j;-1-15*j;-3+1*j;-3+3*j;-3+5*j;-3+7*j;...
-3+9*j;-3+11*j;-3+13*j;-3+15*j;-3-1*j;-3-3*j;-3-5*j;-3-7*j;-3-9*j;...
-3-11*j;-3-13*j;-3-15*j;-5+1*j;-5+3*j;-5+5*j;-5+7*j;-5+9*j;-5+11*j;...
-5+13*j;-5+15*j;-5-1*j;-5-3*j;-5-5*j;-5-7*j;-5-9*j;-5-11*j;-5-13*j;...
-5-15*j;-7+1*j;-7+3*j;-7+5*j;-7+7*j;-7+9*j;-7+11*j;-7+13*j;-7+15*j;...
-7-1*j;-7-3*j;-7-5*j;-7-7*j;-7-9*j;-7-11*j;-7-13*j;-7-15*j;-9+1*j;...
-9+3*j;-9+5*j;-9+7*j;-9+9*j;-9+11*j;-9+13*j;-9+15*j;-9-1*j;-9-3*j;...
-9-5*j;-9-7*j;-9-9*j;-9-11*j;-9-13*j;-9-15*j;-11+1*j;-11+3*j;-11+5*j;...
-11+7*j;-11+9*j;-11+11*j;-11+13*j;-11+15*j;-11-1*j;-11-3*j;-11-5*j;...
-11-7*j;-11-9*j;-11-11*j;-11-13*j;-11-15*j;-13+1*j;-13+3*j;-13+5*j;...
-13+7*j;-13+9*j;-13+11*j;-13+13*j;-13+15*j;-13-1*j;-13-3*j;-13-5*j;...
-13-7*j;-13-9*j;-13-11*j;-13-13*j;-13-15*j;-15+1*j;-15+3*j;-15+5*j;...
-15+7*j;-15+9*j;-15+11*j;-15+13*j;-15+15*j;-15-1*j;-15-3*j;-15-5*j;...
-15-7*j;-15-9*j;-15-11*j;-15-13*j;-15-15*j];
otherwise
error('Modulation candidate not included');
end
% Normalize alphabet
alphabet = alphabet/sqrt(mean(abs(alphabet).^2));