%主函数
 %两径瑞利衰落信道仿真
 %设定默认参数
 NN=256; %传输符号个数
 tb=0.5; %一个比特时间
 fs=10; %每符号采样数
 ebn0db=[1:2:15];%设定Eb/N0
%建立QPSK信号
 x=random_binary(NN,fs)+i*random_binary(NN,fs); %x为QPSK信号
%输入功率和延迟
 p0=0; %视距LOS分量
 p1=20; %第一路径分量
 p2=1; %第二路径分量
 delay=1; %按照每符号采样数决定的延迟
 delay0=0;
 delay1=0;
 delay2=delay;
%设定复高斯(瑞利)衰减
 gain1=sqrt(p1)abs(randn(1,NN)+irandn(1,NN));
 gain2=sqrt(p2)abs(randn(1,NN)+irandn(1,NN));
 for k=1:NN
 for kk=1:fs
 index=(k-1)*fs+kk;
 ggain1(1,index)=gain1(1,k);
 ggain2(1,index)=gain2(1,k);
 end
 end
 y1=x;
 for k=1:delay2
 y2(1,k)=y1(1,k)sqrt(p0);
 end
 for k=(delay2+1):(NNfs)
 
y2(1,k)=y1(1,k)*sqrt(p0)+y1(1,k-delay1)*ggain1(1,k)+y1(1,k-delay2)*ggain2(1,k);
 end
%匹配滤波器
 b=-ones(1,fs);
 b=b/fs;
 a=1;
 y=filter(b,a,y2);
[cor lags]=vxcorr(x,y);
 cmax=max(max(abs(cor)));
 nmax=find(abs(cor)==cmax);
 timelag=lags(nmax);
 corrmag=cmax;
 theta=angle(cor(nmax));
 y=yexp(-itheta);
%噪声BW校准
 hh=impz(b,a); ts=1/16; nbw=(fs/2)sum(hh.^2);
 index=(10fs+8:fs:(NN-10)fs+8);
 xx=x(index);
 yy=y(index-timelag+1);
 [n1 n2]=size(y2);ny2=n1n2;
 eb=tbsum(sum(abs(y2).^2))/ny2;
 eb=eb/2;
 [peideal,pesystem]=qpsk_berest(xx,yy,ebn0db,eb,tb,nbw);
 figure
 semilogy(ebn0db,peideal,'b-’,ebn0db,pesystem,‘r±’)
 xlabel(‘Eb/N0(db)’);ylabel(‘Probability of Error’);
 grid on
 axis([0 14 10^(-10) 1]);
仿真结果:
 需要调用的相关函数:
热门工具 换一换
