关于数字调制解调误码率仿真问题
初来乍到,初学MATLAB,想请教下各位大神能不能帮我看看我的PSK误码率仿真的程序,在仿真结果里,普通接收机实际误码率的图像只有两个圈,-2dB之后就没有他的图像了,但其他两者的误码率图像都OK,这是什么情况啊?%误码率仿真clear allclose allA=1;%载波振幅fc=2;%载波频率(Hz)SNRindB1=-5:1:12; %信噪比取值向量,dB为单位SNRindB2=-5:0.2:12; %信噪比取值向量,dB为单位N_sample=100; %每个码元的采样点数N=10000; %码元数Ts=1;%码元宽度df=0.01;d=sign(randn(1,N)-0.5+eps);simu_err_prb=zeros(1,length(SNRindB1));%理论误码率for i=1:length(SNRindB2)%计算信噪比 SNR=10^(SNRindB2(i)/10);%计算普通接收机的理论误码率 theo_err_prb(i)=0.5*erfc(sqrt(SNR)); %互补误差函数 theo_err_prb1(i)=0.5*erfc(sqrt(2*SNR)); %最佳接收机理论误码率曲线end%计算普通接收机实际误码率for i=1:length(SNRindB1)=bpskberr(A,fc,SNRindB1(i),N_sample,N,Ts,d,df);%调用函数simu_err_prb(i)=numoferr;end%误码率曲线图:估计值和理论值曲线对比图semilogy(SNRindB2,theo_err_prb,SNRindB1,simu_err_prb,'o',SNRindB2,theo_err_prb1,'*');axis([-5 12 0.00000001 1]);xlabel('SNR in dB');ylabel('Prb of Err');legend('普通接收机理论误码率','普通接收机实际误码率','最佳接收机理论误码率');title('PSK误码率');子函数function=bpskberr(A,fc,snr,N_sample,N,Ts,d,df);%--------------------系统仿真参数B=1/Ts;f_start=fc-B;f_cutoff=fc+B;fs=fc*N_sample; %系统采样频率,即考虑载波后,一个码元内的采样点数ts=Ts/fs; %系统采样间隔t=0:ts:N*Ts-ts;Lt=length(t);%----------------------调制信号%产生二进制信源dd=sigexpand((d+1)/2,fc*N_sample);gt=ones(1,fc*N_sample); %NRZ波形,不归零波形d_NRZ=conv(dd,gt);d_sjx=2*d_NRZ-1;d_sjx1=d_sjx(1:Lt);%-----------------------2PSK信号的调制解调ht=A*cos(2*pi*fc*t); %载波s_2psk=d_sjx(1:Lt).*ht; %生成已调制的2PSK信号%-----------------------生成高斯白噪声snr_lin=10^(snr/10); %换算成倍数signal_energy=0.5*A^2*Ts; %求出接收信号平均能量noise_power=(signal_energy*fs)/(snr_lin*4); %求出噪声方差,均值为0noise_std=sqrt(noise_power); %求出噪声均方差noise=noise_std.*rand(1,Lt); %以噪声均方差作为幅度产生高斯白噪声%-----------------------将已调信号送入信道r=s_2psk(1:Lt)+noise(1:Lt); %叠加了噪声的已调信号=T2F(r,ts,df,fs);%--------------------------在接收端进行解调,先通过带通滤波器=bp_f(length(rf),f_start,f_cutoff,df1,fs,1);DEM=H.*rf;%滤波器输出频谱=F2T(DEM,fs);%滤波器输出波形%--------------------------进行相干解调,先和本地载波相乘,即混频der=dem(1:Lt).*ht;%和本地载波相乘,即混频=T2F(der,ts,df,fs);%----------------------------在经过低通滤波器=lp_f(length(derf),B,df1,fs,1);DM=LPF.*derf;%滤波器输出频谱=F2T(DM,fs); %滤波器输出波形%----------------------------最后对LPF输出信号抽样判决panjue=zeros(1,N);%建立存储判决值的矩阵%抽样判决规则:大于等于0判1,小于0判-1for i=1:N; if dm(fc*N_sample*(i-1)+fc*N_sample/2+1)>=0;%抽样判决时刻 panjue(i)=1; else panjue(i)=-1; endend%-----------------------------画出判决的基带信号波形dd1=sigexpand(panjue,fc*N_sample);gt1=ones(1,fc*N_sample);%NRZ波形desinga=conv(dd1,gt1);desinga1=desinga(1:Lt);%----------------------------统计误码数numoferr=sum(abs(panjue-d))/N;%计算出错误码元数end
页:
[1]