📄 qam.m
字号:
%产生基带符号流
M=16; %进制 16QAM
N=40; %信源比特流长度,为保证对齐,选择是log2(M)的整倍数
bitstream=zeros(1,N);
symbolstream=zeros(1,N/log2(M));
for n1=1:N
bitstream(n1)=binornd(1,0.5,1,1); %产生0、1的随机数
end
%格雷码编码
for n1=1:length(symbolstream)
pack=bitstream(4*(n1-1)+1:4*(n1-1)+4); %四个数一组
%映射到复数域
if pack==[0 0 0 0]
symbolstream(n1)=1+j;
elseif pack==[0 0 1 0]
symbolstream(n1)=2+j;
elseif pack==[0 0 1 1]
symbolstream(n1)=2+2j;
elseif pack==[0 0 0 1]
symbolstream(n1)=1+2j;
elseif pack==[0 1 0 1]
symbolstream(n1)=-1+2j;
elseif pack==[0 1 0 0]
symbolstream(n1)=-1+j;
elseif pack==[0 1 1 1]
symbolstream(n1)=-2+2j;
elseif pack==[0 1 1 0]
symbolstream(n1)=-2+j;
elseif pack==[1 1 1 0]
symbolstream(n1)=-2-j;
elseif pack==[1 1 1 1]
symbolstream(n1)=-2-2j;
elseif pack==[1 1 0 1]
symbolstream(n1)=-1-2j;
elseif pack==[1 1 0 0]
symbolstream(n1)=-1-j;
elseif pack==[1 0 0 0]
symbolstream(n1)=1-j;
elseif pack==[1 0 1 0]
symbolstream(n1)=2-j;
elseif pack==[1 0 0 1]
symbolstream(n1)=1-2j;
else symbolstream(n1)=2-2j;
end
end
%画图,星座图
hold on
for n1=-2:2
for n2=-2:2
if ~((n1==0)|(n2==0))
scatter(n1,n2);
end
end
end
axis([-3 3 -3 3]);
hold off
title('16QAM星座图');
xlabel('同相支路')
ylabel('正交支路')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -