如何用 matlab对8psk仿真。我这里有qpsk的
发布网友
发布时间:2022-04-25 01:34
我来回答
共1个回答
热心网友
时间:2023-10-19 18:25
M=8;
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=molate(modem.qammod('M',8,'InputType','Bit'),x);%调制
ynoisy=awgn(y,snr(n),'measured');%加入高斯白噪声
z=demolate(modem.qamdemod('M',8,'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('8QAM 星座图');