2FSK信号的调制与解调matlab程序.docx
clearall;closeall;f=300;t=2*(0:0.001:1-0.01)f;x=t;singal=sin(2*pi*f*x)+l;%U率PCM编码%a=singal;n=8;%u率非线性u=255;%待考察,应当是255%c=zeros(size(八));fori=l:length(八)c(i)=log(1+u*a(i)log(1+u);%在PCM中要求X应当大于0endcmax=max(c);cmin=min(c);%匀称量化c_quan=c;b_quan=c_quan;d=(cmax-cmin)n;%此处有问题%自己写的量化代码%forj=l:n+lkk(j)=cmin+j*d;endfork=l:nq(k)=(kk(k)+kk(k÷1)/2;end%fori=l:nm=find(q(i)-d2<=c_quan)&(q(i)+d2>=c_quan);c_quan(m)=q(i).*ones(1,length(m);b_quan(find(c_quan=q(i)=(i-l).*ones(1,length(find(c_quan=q(i);end%编码nu=ceil(log2(n);code=zeros(length(八),nu);fori=l:length(八)forj=(nu-l):-l:0if(fix(b-quan(i)(2j)=1)code(i,(nu-j)=1;b_quan(i)=b-quan(i)-2j;endendendbitstorm=U;fori=1.length(COde)bitstorm=bitstorm,code(i,:);end%FSK调制的实现%figuresubplot(221);stairs(bitstorm(1:20);title(调制信号);axis(0,20,-0.1,1.2);gridon%这是设置随机数值%rand('statesum(100*clock);randn('state',sum(100*clock);mintestlongth=1000;maxtestlongth=1000;A=1;Eb=A*A;SNR=10;%信噪比index=1;%forSNRl=0:10dispC程序在运行,请稍等.,);NO=Eb*10N-SNR/10);%待解决noiseVar=NO/2;%噪声密度noiseRoot=sqrt(noiseVar)%噪声的均方差errorCount=0;testCount=0;fl=1;f2=2;mm=0:0.02:1-0.02;%抽样判决在t轴上的抽样矩阵i=0;DemoFSK=zeros(1,mintestlongth);FSK=zeros(lJ0*length(mm);%这是为什么noise_FSK=zeros(1,10*length(mm);while(1)i=i+l;%调制解调src=bitstorm(i);srcl=src;src2=I-src;noise=noiseRoot.*randn(lJength(noiseRoot);%高斯白噪声矩阵fsk=cos(2*pi*fl*mm)*srcl+cos(2*pi*f2*mm)*src2;noise_fsk=fsk+noise;ifi<=10FSK(1+length(mm)*(i-1):length(mm)*i)=fsk;%修改过%noise-FSK(1+length(mm)*(i-1):length(mm)*i)=noise_fsk;endofskl=noise-fsk.*cos(2*pi*fl*mm);ofsk2=noise-fsk.*cos(2*pi*f2*mm);ofsk11=filtfilt(ones(1,10),9.7675,ofskI);%低通滤波ofsk22=filtfilt(ones(1,10),9.7675,ofsk2);avol=sum(abs(ofsk11)/length(mm);%抽样值的肯定值的平均值avo2=sum(abs(ofsk22)length(mm);ifavol>=1/2DemoFSK(i)=1;elseDemoFSK(i)=0;endifavol>1/2&avo2>1/2errorCount=errorCount+I;elseifavo1<1/2&avo2<1/2errorCount=errorCount+I;endtestCount=testCount+1;%测试的长度if(testCount<mintestlongth)%推断测试长度是否达到要求continue;endtempBER=errorCount/testCount%误码率if(tempBER>O)IhreshoIdTest1.ongth=1/tenipBER;%依据误码率来确定测试的长度elseIhresholdTest1.ongth=maxtestlongth;endif(testCount>=thresholdTest1.ongth)myTest1.ength(index)=testCount;myBER(index)=tempBER;mySNR(index)=SNR;index=index+1;breakendend%endsubplot(222),Plot(FSK)UitleCFSK信号');subplot(223),plot(noise_FSK);titleC加入噪声的FSK信号);SUbPlOt(224),StairS(DemOFSK(1:20),axis(0,20,-0.2.解调后的信号');figure(2);SUbPlot(221),PIot(O4ength(bitstorm)-l),10*loglO(abs(fft(bitstorm);title('调制信号频谱');SUbPlOt(222),PIot(OUength(FSK)-1),10*log10(abs(fft(FSK);title('FSK信号频谱');subplot(223),plot(0:length(noise_FSK)-1),10*log10(abs(fft(noiseJFSK);title('加入噪声的FSK信号频谱');SUbPIOt(224),Plot(OJength(DemoFSK)-1),10*log10(abs(fft(DemoFSK);title('解调后的信号频谱);figureSemilogy(mySNR,myBER;r+,);XlabeIC信噪比XylabelC误码率holdon;SNR-R=10(mySNR10);thBER=0.5*erfc(sqrt(SNR.R2);SemiIOgy(mySNR,thBER,'*-');IegendC仿真结果理论结果;gridon;