QPSK调制与解调在MATLAB平台上的实现% QPSK误码率分析SNRindB1=0:2:10;SNRindB2=0:0.1:10;for i=1:length(SNRindB1)[pb,ps]=cm_sm32(SNRindB1(i));smld_bit_err_prb(i)=pb;smld_symbol_err_prb(i)=ps;end;for i=1:length(SNRindB2)SNR=exp(SNRindB2(i)
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/29 16:49:12
![QPSK调制与解调在MATLAB平台上的实现% QPSK误码率分析SNRindB1=0:2:10;SNRindB2=0:0.1:10;for i=1:length(SNRindB1)[pb,ps]=cm_sm32(SNRindB1(i));smld_bit_err_prb(i)=pb;smld_symbol_err_prb(i)=ps;end;for i=1:length(SNRindB2)SNR=exp(SNRindB2(i)](/uploads/image/z/11697529-49-9.jpg?t=QPSK%E8%B0%83%E5%88%B6%E4%B8%8E%E8%A7%A3%E8%B0%83%E5%9C%A8MATLAB%E5%B9%B3%E5%8F%B0%E4%B8%8A%E7%9A%84%E5%AE%9E%E7%8E%B0%25+QPSK%E8%AF%AF%E7%A0%81%E7%8E%87%E5%88%86%E6%9E%90SNRindB1%3D0%3A2%3A10%3BSNRindB2%3D0%3A0.1%3A10%3Bfor+i%3D1%3Alength%28SNRindB1%29%5Bpb%2Cps%5D%3Dcm_sm32%28SNRindB1%28i%29%29%3Bsmld_bit_err_prb%28i%29%3Dpb%3Bsmld_symbol_err_prb%28i%29%3Dps%3Bend%3Bfor+i%3D1%3Alength%28SNRindB2%29SNR%3Dexp%28SNRindB2%28i%29)
QPSK调制与解调在MATLAB平台上的实现% QPSK误码率分析SNRindB1=0:2:10;SNRindB2=0:0.1:10;for i=1:length(SNRindB1)[pb,ps]=cm_sm32(SNRindB1(i));smld_bit_err_prb(i)=pb;smld_symbol_err_prb(i)=ps;end;for i=1:length(SNRindB2)SNR=exp(SNRindB2(i)
QPSK调制与解调在MATLAB平台上的实现
% QPSK误码率分析
SNRindB1=0:2:10;
SNRindB2=0:0.1:10;
for i=1:length(SNRindB1)
[pb,ps]=cm_sm32(SNRindB1(i));
smld_bit_err_prb(i)=pb;
smld_symbol_err_prb(i)=ps;
end;
for i=1:length(SNRindB2)
SNR=exp(SNRindB2(i)*log(10)/10);
theo_err_prb(i)=Qfunct(sqrt(2*SNR));
end;
title('QPSK误码率分析');
semilogy(SNRindB1,smld_bit_err_prb,'*');
axis([0 10 10e-8 1]);
hold on;
% semilogy(SNRindB1,smld_symbol_err_prb,'o');
semilogy(SNRindB2,theo_err_prb);
legend('仿真比特误码率','理论比特误码率');
hold off;
function[y]=Qfunct(x)
y=(1/2)*erfc(x/sqrt(2));
function[pb,ps]=cm_sm32(SNRindB)
N=10000;
E=1;
SNR=10^(SNRindB/10);
sgma=sqrt(E/SNR)/2;
s00=[1 0];
s01=[0 1];
s11=[-1 0];
s10=[0 -1];
for i=1:N
temp=rand;
if (temp
QPSK调制与解调在MATLAB平台上的实现% QPSK误码率分析SNRindB1=0:2:10;SNRindB2=0:0.1:10;for i=1:length(SNRindB1)[pb,ps]=cm_sm32(SNRindB1(i));smld_bit_err_prb(i)=pb;smld_symbol_err_prb(i)=ps;end;for i=1:length(SNRindB2)SNR=exp(SNRindB2(i)
程序没有错,不是直接运行的,你需要建立三个.m文件,分别把两个Function和最上面的程序粘贴上去.我修改了一下你只需要建立两个.m文件然后运行第一个文件就可以得到结果.
SNRindB1=0:2:10;
SNRindB2=0:0.1:10;
for i=1:length(SNRindB1)
[pb,ps]=cm_sm32(SNRindB1(i));
smld_bit_err_prb(i)=pb;
smld_symbol_err_prb(i)=ps;
end;
for i=1:length(SNRindB2)
SNR=exp(SNRindB2(i)*log(10)/10);
theo_err_prb(i)=(1/2)*erfc(sqrt(2*SNR)/sqrt(2));
end;
title('QPSK误码率分析');
semilogy(SNRindB1,smld_bit_err_prb,'*');
axis([0 10 10e-8 1]);
hold on;
% semilogy(SNRindB1,smld_symbol_err_prb,'o');
semilogy(SNRindB2,theo_err_prb);
legend('仿真比特误码率','理论比特误码率');
hold off;
另一个.m文件
function [pb,ps]=cm_sm32(SNRindB)
N=10000;
E=1;
SNR=10^(SNRindB/10);
sgma=sqrt(E/SNR)/2;
s00=[1 0];
s01=[0 1];
s11=[-1 0];
s10=[0 -1];
for i=1:N
temp=rand;
if (temp