forked from DingranFeng/Wireless-Communication-Simulation
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathQAM64_modulation.m
33 lines (31 loc) · 2.28 KB
/
QAM64_modulation.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
function Tsignal = QAM64_modulation(Tdata)
%%%64QAM调制
%%%输入参数为二进制数据,输出参数为基带发射信号
d = sqrt(2/21); %星座图上相邻两点距离
Map = [-3.5*d+3.5*d*1i -2.5*d+3.5*d*1i -1.5*d+3.5*d*1i -0.5*d+3.5*d*1i 0.5*d+3.5*d*1i 1.5*d+3.5*d*1i 2.5*d+3.5*d*1i 3.5*d+3.5*d*1i...
-3.5*d+2.5*d*1i -2.5*d+2.5*d*1i -1.5*d+2.5*d*1i -0.5*d+2.5*d*1i 0.5*d+2.5*d*1i 1.5*d+2.5*d*1i 2.5*d+2.5*d*1i 3.5*d+2.5*d*1i...
-3.5*d+1.5*d*1i -2.5*d+1.5*d*1i -1.5*d+1.5*d*1i -0.5*d+1.5*d*1i 0.5*d+1.5*d*1i 1.5*d+1.5*d*1i 2.5*d+1.5*d*1i 3.5*d+1.5*d*1i...
-3.5*d+0.5*d*1i -2.5*d+0.5*d*1i -1.5*d+0.5*d*1i -0.5*d+0.5*d*1i 0.5*d+0.5*d*1i 1.5*d+0.5*d*1i 2.5*d+0.5*d*1i 3.5*d+0.5*d*1i...
-3.5*d-0.5*d*1i -2.5*d-0.5*d*1i -1.5*d-0.5*d*1i -0.5*d-0.5*d*1i 0.5*d-0.5*d*1i 1.5*d-0.5*d*1i 2.5*d-0.5*d*1i 3.5*d-0.5*d*1i...
-3.5*d-1.5*d*1i -2.5*d-1.5*d*1i -1.5*d-1.5*d*1i -0.5*d-1.5*d*1i 0.5*d-1.5*d*1i 1.5*d-1.5*d*1i 2.5*d-1.5*d*1i 3.5*d-1.5*d*1i...
-3.5*d-2.5*d*1i -2.5*d-2.5*d*1i -1.5*d-2.5*d*1i -0.5*d-2.5*d*1i 0.5*d-2.5*d*1i 1.5*d-2.5*d*1i 2.5*d-2.5*d*1i 3.5*d-2.5*d*1i...
-3.5*d-3.5*d*1i -2.5*d-3.5*d*1i -1.5*d-3.5*d*1i -0.5*d-3.5*d*1i 0.5*d-3.5*d*1i 1.5*d-3.5*d*1i 2.5*d-3.5*d*1i 3.5*d-3.5*d*1i];
MapTable = [0 0 0 0 0 0;0 0 0 0 0 1;0 0 0 0 1 1;0 0 0 0 1 0;0 0 0 1 1 0;0 0 0 1 1 1;0 0 0 1 0 1;0 0 0 1 0 0;
0 0 1 1 0 0;0 0 1 1 0 1;0 0 1 1 1 1;0 0 1 1 1 0;0 0 1 0 1 0;0 0 1 0 1 1;0 0 1 0 0 1;0 0 1 0 0 0;
0 1 1 0 0 0;0 1 1 0 0 1;0 1 1 0 1 1;0 1 1 0 1 0;0 1 1 1 1 0;0 1 1 1 1 1;0 1 1 1 0 1;0 1 1 1 0 0;
0 1 0 1 0 0;0 1 0 1 0 1;0 1 0 1 1 1;0 1 0 1 1 0;0 1 0 0 1 0;0 1 0 0 1 1;0 1 0 0 0 1;0 1 0 0 0 0;
1 1 0 0 0 0;1 1 0 0 0 1;1 1 0 0 1 1;1 1 0 0 1 0;1 1 0 1 1 0;1 1 0 1 1 1;1 1 0 1 0 1;1 1 0 1 0 0;
1 1 1 1 0 0;1 1 1 1 0 1;1 1 1 1 1 1;1 1 1 1 1 0;1 1 1 0 1 0;1 1 1 0 1 1;1 1 1 0 0 1;1 1 1 0 0 0;
1 0 1 0 0 0;1 0 1 0 0 1;1 0 1 0 1 1;1 0 1 0 1 0;1 0 1 1 1 0;1 0 1 1 1 1;1 0 1 1 0 1;1 0 1 1 0 0;
1 0 0 1 0 0;1 0 0 1 0 1;1 0 0 1 1 1;1 0 0 1 1 0;1 0 0 0 1 0;1 0 0 0 1 1;1 0 0 0 0 1;1 0 0 0 0 0]; %格雷码比特映射表
datanum = length(Tdata); %二进制数据总数
Tsignal = zeros(datanum/6,1); %发射信号
for i = 1:datanum/6
for j = 1:64
if isequal(Tdata(6*i-5:6*i),MapTable(j,:))
Tsignal(i) = Map(j); %产生复信号
break;
end
end
end
end