clc
clear
%% 参数配置
% 调制方式选择
ModeTpye = 2; % 1--BPSK,2--QPSK,4--16QAM,6--64QAM
Len = 2400; % 仿真比特数,最好为12的倍数
% 根据调制方式配置星座
switch ModeTpye
case 1
SymbolSet = 1/sqrt(2)*[1+1j*1;-1-1j*1];
case 2
SymbolSet = 1/sqrt(2)*[1+1j*1;1-1j*1;-1+1j*1;-1-1j*1];
case 4
SymbolSet = 1/sqrt(10)*[1+1j*1;1+1j*3;3+1j*1;3+1j*3;1-1j*1;1-1j*3;3-1j*1;3-1j*3;-1+1j*1;-1+1j*3;-3+1j*1;-3+1j*3;-1-1j*1;-1-1j*3;-3-1j*1;-3-1j*3];
case 6
SymbolSet = 1/sqrt(42)*[3+1j*3;3+1j*1;1+1j*3;1+1j*1;3+1j*5;3+1j*7;1+1j*5;1+1j*7;5+1j*3;5+1j*1;7+1j*3;7+1j*1;5+1j*5;5+1j*7;7+1j*5;7+1j*7;3-1j*3;3-1j*1;1-1j*3;1-1j*1;3-1j*5;3-1j*7;1-1j*5;1-1j*7;5-1j*3;5-1j*1;7-1j*3;7-1j*1;5-1j*5;5-1j*7;7-1j*5;7-1j*7;-3+1j*3;-3+1j*1;-1+1j*3;-1+1j*1;-3+1j*5;-3+1j*7;-1+1j*5;-1+1j*7;-5+1j*3;-5+1j*1;-7+1j*3;-7+1j*1;-5+1j*5;-5+1j*7;-7+1j*5;-7+1j*7;-3-1j*3;-3-1j*1;-1-1j*3;-1-1j*1;-3-1j*5;-3-1j*7;-1-1j*5;-1-1j*7;-5-1j*3;-5-1j*1;-7-1j*3;-7-1j*1;-5-1j*5;-5-1j*7;-7-1j*5;-7-1j*7];
otherwise
disp('无效的调制方式')
end
%% 仿真
%生成信源比特
SrcBits = randi([0,1],Len,1);
SrcBits1 = reshape(SrcBits(1:ModeTpye*floor(Len/ModeTpye)),ModeTpye,floor(Len/ModeTpye))'; % 根据调制方式对数据分组,每组ModeTpye个比特
SrcIndex = bi2de(SrcBits1); % 将每组比特转变为调制符号序号
Symbols = SymbolSet(SrcIndex+1); % 调制
I = real(Symbols);
Q = imag(Symbols);
% 画星座图
switch ModeTpye
case 1
scatter(I,Q)
xlabel('U(V)');
ylabel('U(V)');
title('BPSK')
case 2
scatter(I,Q)
xlabel('U(V)');
ylabel('U(V)');
title('QPSK')
case 4
scatter(I,Q)
xlabel('U(V)');
ylabel('U(V)');
title('16QAM')
case 6
scatter(I,Q)
xlabel('U(V)');
ylabel('U(V)');
title('64QAM')
end