clearallcloseall%参数fcarr=2e3;%Carrierfrequency(Hz)B=1e3;%Rateofsymbol(Baud)nsamp=16;%oversampleratefs=nsamp*B;%Samplingfrequency(Hz)Fn=fs/2;%NyquistfrequencyTs=1/fs;%SamplingTimeM=4;NumBit=2000;%NumberofbitsinoneframeNumMont=100;SNR_dB=10;%只能输入一个信噪比值SNR=10.^(SNR_dB/10);DataTX=randint(1,NumBit);%产生ZR信号signal=mapping(DataTX,M);%产生NZR信号\fori=1:nsamp*length(signal),%Izero(i)=I(fix((i-1)/zero)+1);ifrem(i,nsamp)==1signalsam(i)=signal(fix((i-1)/nsamp)+1);elsesignalsam(i)=0;endenddelay=8;%延迟rolloff=;%滚降因子n_o=5;%滤波器阶数,或取50N=2*nsamp*n_o;psf=rcosfir(rolloff,n_o,fs/B,fs,'sqrt');signal_I=conv(real(signalsam),psf);%成型波signal_Q=conv(imag(signalsam),psf);%成形波fori=1:nsamp*length(signal)+N,t(i)=(i-1)/fs;s_I(i)=signal_I(i)*sqrt(2)*cos(2*pi*fcarr*t(i));s_Q(i)=signal_Q(i)*sqrt(2)*(-sin(2*pi*fcarr*t(i)));endsignal_tx=s_I+s_Q;%经过信道Es=1;%Eg=1,Es本来等于Eg/2,但是前面的载波幅度为sqrt(2),所以这里的Es=1EsN0_dB=10*log10(nsamp)+SNR_dB;%计算出Es/N0的值,单位是dBN0=1/[10^(EsN0_dB/10)];noise=randn(1,length(signal_tx))*sqrt(N0);%noise=0;signal_tx_n=signal_tx+noise;%带有噪声的信号%%QPSKreceiver%%demodulationfai0=30*pi/180;%fai0=15*pi/180;%fai0=45*pi/180;fai0=0;v=+;f_cL=fcarr-v*B;%f_cL=fcarrfori=1:nsamp*length(signal)+N,s_rI(i)=signal_tx_n(i)*sqrt(2)*cos(2*pi*f_cL*t(i)+fai0);s_rQ(i)=signal_tx_n(i)*(-sqrt(2)*sin(2*pi*f_cL*t(i)+fai0));end%matchedfiltermf=rcosfir(rolloff,n_o,nsamp,fs,'sqrt');signal_rI=conv(s_rI,mf);signal_rQ=conv(s_rQ,mf);
QPSK调试与解调程序 来自淘豆网m.daumloan.com转载请标明出处.