一、
M=16;
k=log2(M);
x=randint(30000,1);%产生二进制随机数
y=modulate(modem.qammod('M',16,'InputType','Bit'),x);%调制
EbNo=-5:1:10;%信噪比
s_b2d=bi2de(reshape(x,k,length(x)/k).','left-msb');%二进制变为十进制
for n=1:length(EbNo)
snr(n)=EbNo(n)+10*log10(k);%Ratio of symbol energy to noise power spectral density
ynoisy=awgn(y,snr(n),'measured');%加入高斯白噪声
z=demodulate(modem.qamdemod('M',16,'OutputType','Bit'),ynoisy);%解调
r_b2d=bi2de(reshape(z,k,length(z)/k).','left-msb');%二进制变为十进制
[sym(n),sym_rate(n)]=symerr(s_b2d,r_b2d);%计算仿真误码率,不是误比特率。
theo_sym_rate(n)=(3/2*erfc(sqrt(k*0.1*(10.^(EbNo(n)/10)))))*(1-3/8*erfc(sqrt(k*0.1*(10.^(EbNo(n)/10)))));
%《移动通信》P55的式子,已化简。
end
disp(sym);
disp(sym_rate);
semilogy(EbNo,sym_rate,'r*',EbNo,theo_sym_rate,'b-');%画图。
title('误码率性能');
xlabel('Eb/No(dB)');
ylabel('误码特率');
legend('仿真误码率','理论误码率');
h=scatterplot(ynoisy(1:1*5e3),1,0,'g.');%画图。
hold on;
scatterplot(y(1:1*5e3),1,0,'r*',h);%画图。
title('Received Signal');
legend('接收信号','星座点');
axis([-5 5 -5 5]);
EbNo=-5:1:10;%信噪比
s_b2d=bi2de(reshape(x,k,length(x)/k).','left-msb');%二进制变为十进制
for n=1:length(EbNo)
snr(n)=EbNo(n)+10*log10(k);%Ratio of symbol energy to noise power spectral density
z=demodulate(modem.qamdemod('M',16,'OutputType','Bit'),ynoisy);%解调
r_b2d=bi2de(reshape(z,k,length(z)/k).','left-msb');%二进制变为十进制
[sym(n),sym_rate(n)]=symerr(s_b2d,r_b2d);%计算仿真误码率,不是误比特率。
theo_sym_rate(n)=(3/2*erfc(sqrt(k*0.1*(10.^(EbNo(n)/10)))))*(1-3/8*erfc(sqrt(k*0.1*(10.^(EbNo(n)/10)))));
%《移动通信》P55的式子,已化简。
end
disp(sym);
disp(sym_rate);
semilogy(EbNo,sym_rate,'r*',EbNo,theo_sym_rate,'b-');%画图。
title('误码率性能');
xlabel('Eb/No(dB)');
ylabel('误码特率');
legend('仿真误码率','理论误码率');
h=scatterplot(ynoisy(1:1*5e3),1,0,'g.');%画图。
hold on;
scatterplot(y(1:1*5e3),1,0,'r*',h);%画图。
title('Received Signal');
legend('接收信号','星座点');
axis([-5 5 -5 5]);
hold off;
三、
M=16;
k=log2(M);
EbNo=-5:1:10;%信噪比
for n=1:length(EbNo)
for m=1:5
x=round(rand(3000,1));%产生二进制随机数
snr(n)=EbNo(n)+10*log10(k);%Ratio of symbol energy to noise power spectral density
xsym=bi2de(reshape(x,k,length(x)/k).','left-msb');%二进制变为十进制
y=modulate(modem.qammod('M',16,'InputType','Bit'),x);%调制
ynoisy=awgn(y,snr(n),'measured');%加入高斯白噪声
z=demodulate(modem.qamdemod('M',16,'OutputType','Bit'),ynoisy);%解调
zsym=bi2de(reshape(z,k,length(z)/k).','left-msb');%二进制变为十进制
[sym0(m),sym_rate0(m)]=symerr(xsym,zsym);%计算仿真误码率,不是误比特率。
end
sym_rate(n)=sum(sym_rate0)/5;
theo_sym_rate(n)=(3/2*erfc(sqrt(k*0.1*(10.^(EbNo(n)/10)))))*(1-3/8*erfc(sqrt(k*0.1*(10.^(EbNo(n)/10)))));
%《移动通信》P55的式子,已化简。
end
figure(1)
subplot(1,2,1)
plot(EbNo,sym_rate,'ro',EbNo,theo_sym_rate,'b-');
axis([-5,10,10^-3,10^0]);
xlabel('Eb/No(dB) ');
ylabel('误码率Pe');
title('误码率性能');
legend('仿真误码率','理论误码率');
subplot(1,2,2)
plot(ynoisy(1:1*750),'r.');%画图。
hold on;
plot(y(1:1*750),'b*');
axis([-5,5,-5,5]);
xlabel('I ');
ylabel('Q ');
legend('接收信号','星座点');
title('16QAM 星座图');