1、. .数字通信计算机课设程序代码/SigTranmit.cpp:implementationoftheSigTranmitclass./#includestdafx.h#includeASK.h#includeSigTranmit.h#include#ifdef_DEBUG#undefTHIS_FILEstaticcharTHIS_FILE=_FILE_;#definenewDEBUG_NEW#endif/Construction/Destruction/SigTranmit:SigTranmit()c=0;/*S016=0;floatS116=0;Mod16*M=0;Sa16*M=0;Sal
2、16*M=0;H116*M=0;H216*M=0;No16*M=0;HbN=0;PN=0;WnN=0;*/SigTranmit:SigTranmit()voidSigTranmit:SetDigital(intID,intIntensity)/赋值myID=ID;myIntensity=Intensity;voidSigTranmit:Basesignal()/基带信号/ID变成int型数组inta4=0;inti=0;intk=15;inttemp=0;a0=myID%10;a1=myID/10%10;a2=myID/100%10;a3=myID/1000;for(intj=0;j4;j+)
3、i=0;temp=aj;for(i;i1;k-;/采样k=0;for(i=0;i16;i+)for(j=0;jM;j+)Salk=S0i;k+;for(i=0;i16*M;i+)if(Sali=0)Sai=-1;elseSai=Sali;Dft(Sa,16*M);voidSigTranmit:Lpf()/低通Conv(Sa,GetH1();Dft(Sa,16*M);voidSigTranmit:Dft(floatx,intm)/DFT变换for(intk=0;km;k+)ARk=0;AIk=0;for(inti=0;im;i+)ARk=ARk+xi*cos(2*PI*k*i/m);AIk=AI
4、k+xi*sin(2*PI*k*i/m);Ak=sqrt(ARk*ARk+AIk*AIk);voidSigTranmit:modulate()/调制floata=0.0;for(inti=0;i16*M;i+)a=2.0*PI*i*0.15;Modi=Sai*cos(a);for(i=0;i16*M;i+)Sai=Modi;Dft(Sa,16*M);voidSigTranmit:Channel()/信道Noise(myIntensity);for(inti=0;i16*M;i+)Sai=Noi+Sai;Dft(Sa,16*M);voidSigTranmit:Noise(intinten)/噪声
5、inti,k;floatr0=0.0;floatr12;for(k=0;k16*M;k+)for(i=0;i12;i+)ri=(float)(2*rand()-RAND_MAX)/RAND_MAX;r0+=ri;r0=float(inten*r0/12.0);Nok=r0;Dft(No,16*M);voidSigTranmit:Bpf()/带通inti;floata=(N-1)/2;/生成理想带通滤波器的单位取样响应for(i=0;iN;i+)if(i=a)Hbi=(float)0.4;elseHbi=sin(0.7*PI*(i-a)/(float)(PI*(i-a)-sin(0.3*PI*(
6、i-a)/(float)(PI*(i-a);switch(c)case0:for(i=0;iN;i+)Wni=0.5*(1.0-cos(2.0*PI*i/(N-1);break;case1:for(i=0;iN;i+)Wni=0.54-0.46*cos(2.0*PI*i/(N-1);break;case2:/生成布莱克曼窗for(i=0;iN;i+)Wni=0.42-0.5*cos(2.0*PI*i/(N-1)+0.08*cos(4.0*PI*i/(N-1);for(i=0;iN;i+)Hbi=Hbi*Wni;Conv(Sa,GetHb();Dft(Sa,16*M);voidSigTranmit:Demodulate()/解调floata=0.0;for(inti=0;i16*M;i+)a=2.0*PI*i*0.15;Modi=Sai*cos(a);for(i=0;i16*M;i+)Sai=Modi;Dft(Sa,16*M);voidSigTranmit:Adjust()/判决intk=0;intj=0;for(inti=0;i16;i+)S1i=0;for(j=0;jM;j+)S1i+=Sak;k+;k=0;for(i=0;i16;i+)for(j=0;j0)Sak=1;k+;elseSak=-1;k+;. .word.zl.