燕山大学数字通信计算机仿真课程设计报告模板.docx
《燕山大学数字通信计算机仿真课程设计报告模板.docx》由会员分享,可在线阅读,更多相关《燕山大学数字通信计算机仿真课程设计报告模板.docx(12页珍藏版)》请在冰豆网上搜索。
![燕山大学数字通信计算机仿真课程设计报告模板.docx](https://file1.bdocx.com/fileroot1/2023-1/24/f46c6840-72d7-489b-93de-7f31238a8288/f46c6840-72d7-489b-93de-7f31238a82881.gif)
燕山大学数字通信计算机仿真课程设计报告模板
..
专业资料
..
专业资料
..
专业资料
..
专业资料
..
专业资料
..
专业资料
..
专业资料
..
专业资料
..
专业资料
..
数字通信计算机课设程序代码
//SigTranmit.cpp:
implementationoftheSigTranmitclass.
//
//////////////////////////////////////////////////////////////////////
#includestdafx.h
#includeASK.h
专业资料
..
#includeSigTranmit.h
#include
#ifdef_DEBUG
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#definenewDEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
//Construction/Destruction
//////////////////////////////////////////////////////////////////////
SigTranmit:
:
SigTranmit()
{c=0;
/*S0[16]={0};
floatS1[16]={0};
Mod[16*M]={0};
Sa[16*M]={0};
Sal[16*M]={0};
H1[16*M]={0};
H2[16*M]={0};
No[16*M]={0};
Hb[N]={0};
P[N]={0};
Wn[N]={0};*/
}
SigTranmit:
:
~SigTranmit()
{
}
voidSigTranmit:
:
SetDigital(intID,intIntensity)//赋值
{
myID=ID;
myIntensity=Intensity;
}
voidSigTranmit:
:
Basesignal()//基带信号
{
//ID变成int型数组
inta[4]={0};
inti=0;
intk=15;
inttemp=0;
a[0]=myID_x0010_;
a[1]=myID/10_x0010_;
a[2]=myID/100_x0010_;
a[3]=myID/1000;
for(intj=0;j<4;j++)
专业资料
..
{i=0;
temp=a[j];
for(i;i<4;i++){S0[k]=temp&0x1;temp=temp>>1;k--;}}//采样k=0;for(i=0;i<16;i++){for(j=0;jvoidSigTranmit:
:
Lpf()//低通{Conv(Sa,GetH1());Dft(Sa,16*M);}
voidSigTranmit:
:
Dft(floatx[],intm)//DFT变换{for(intk=0;kvoidSigTranmit:
:
modulate()//调制{floata=0.0;for(inti=0;i<16*M;i++){a=2.0*PI*i*0.15;Mod[i]=Sa[i]*cos(a);}
for(i=0;i<16*M;i++)Sa[i]=Mod[i];Dft(Sa,16*M);}
voidSigTranmit:
:
Channel()//信道{Noise(myIntensity);for(inti=0;i<16*M;i++)Sa[i]=No[i]+Sa[i];Dft(Sa,16*M);}
voidSigTranmit:
:
Noise(intinten)//噪声{inti,k;floatr0=0.0;floatr[12];
for(k=0;k<16*M;k++){for(i=0;i<12;i++){r[i]=(float)(2*rand()-RAND_MAX)/RAND_MAX;r0+=r[i];r0=float(inten*r0/12.0);}No[k]=r0;}Dft(No,16*M);}
voidSigTranmit:
:
Bpf()//带通{inti;
floata=(N-1)/2;//生成理想带通滤波器的单位取样响应for(i=0;i{for(i=0;iWn[i]=0.5*(1.0-cos(2.0*PI*i/(N-1)));};break;case1:
{for(i=0;i//生成布莱克曼窗{for(i=0;i};}for(i=0;i专业资料
..
}Conv(Sa,GetHb());Dft(Sa,16*M);}
voidSigTranmit:
:
Demodulate()//解调{floata=0.0;for(inti=0;i<16*M;i++){a=2.0*PI*i*0.15;Mod[i]=Sa[i]*cos(a);}
for(i=0;i<16*M;i++)Sa[i]=Mod[i];Dft(Sa,16*M);}
voidSigTranmit:
:
Adjust()//判决{intk=0;intj=0;for(inti=0;i<16;i++){S1[i]=0;for(j=0;j0){Sa[k]=1;
k++;}else{Sa[k]=-1;k++;
专业资料