📄 qam_16.m
字号:
clear
d=1;
M=16;
k=log2(M);
fc=10; %载波频率
fs=100; %采样频率
T=1; %每符号持续时间
N_samples=T*fs; %每符号内的采样点数
t=0:T/N_samples:(T-T/N_samples);
carrier=exp(j*2*pi*fc*t);
gt=ones(1,length(carrier)); %产生信号脉冲g(t)
N=32;
for i=1:N
temp=rand;
dsource(i)=1+floor(M*temp);
end
mapping=[-3*d 3*d;
-d 3*d;
d 3*d;
3*d 3*d;
-3*d d;
-d d;
d d;
3*d d;
-3*d -d;
-d -d;
d -d;
3*d -d;
-3*d -3*d;
-d -3*d;
d -3*d;
3*d -3*d];
for i=1:N
j=sqrt(-1);
qam_sig(i,:)=mapping(dsource(i),:);
symbolstream(i)=qam_sig(i,1)+j*qam_sig(i,2);
end
St_complex=zeros(1,length(carrier)*length(symbolstream));
for n1=1:length(symbolstream)
St_complex((N_samples*(n1-1)+1):(N_samples*(n1-1)+N_samples))=(symbolstream(n1)*carrier).*gt;
end
figure(1)
St_real=real(St_complex);
plot(St_real)
title('QAM仿真波形图 载波10Hz g(t)为矩形脉冲');
xlabel('采样点')
ylabel('幅度')
%求出功率谱,这种功率谱不是按照公式直接计算的
%而是对所产生的一段时间内的信号的采样点进行FFT所得到的
spectrum=(real(fft(St_real,10*length(St_real)))).^2;
S_spectrum=spectrum(1:length(spectrum)/2);
figure(2)
F=0:fs/(2*length(S_spectrum)):fs/2-fs/(2*length(S_spectrum));
plot(F,10*log10(S_spectrum))
axis([0 50 -30 70]);
title('QAM信号功率谱密度')
xlabel('频率/Hz');
ylabel('功率');
%生成星座图。
figure(3)
a=[-3 -1 1 3];b=[-3 -1 1 3];
hold on
for i=1:4
for j=1:4
scatter(a(i),b(j));
end
end
axis([-4 4 -4 4]);
hold off
title('16QAM星座图');
xlabel('同相支路');
ylabel('正交支路');
%对不同信噪比情况下的性能仿真
echo on
SNRindB1=0:2:15;
SNRindB2=0:0.1:15;
for i=1:length(SNRindB1)
smld_err_prb(i)=cm_sm(SNRindB1(i));
echo off;
end
echo on;
for i=1:length(SNRindB2)
SNR=exp(SNRindB2(i)*log(10)/10);
theo_err_prb(i)=4*Qfunct(sqrt(3*k*SNR/(M-1)));
echo off;
end
echo on;
figure(4)
semilogy(SNRindB1,smld_err_prb,'*');
hold
semilogy(SNRindB2,theo_err_prb);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -