燕山大学数字通信计算机仿真课程设计报告模板

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

..

专业资料

..

专业资料

..

专业资料

..

专业资料

..

专业资料

..

专业资料

..

专业资料

..

专业资料

..

专业资料

..

数字通信计算机课设程序代码

// SigTranmit.cpp: implementation of the SigTranmit class.

//

////////////////////////////////////////////////////////////////////// #include stdafx.h

#include ASK.h

专业资料

..

#include SigTranmit.h

#include

#ifdef _DEBUG

#undef THIS_FILE

static char THIS_FILE[]=__FILE__;

#define new DEBUG_NEW

#endif

////////////////////////////////////////////////////////////////////// // Construction/Destruction

////////////////////////////////////////////////////////////////////// SigTranmit::SigTranmit()

{ c=0;

/* S0[16]={0};

float S1[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()

{

}

void SigTranmit::SetDigital(int ID,int Intensity)//赋值

{

myID=ID;

myIntensity=Intensity;

}

void SigTranmit::Basesignal()//基带信号

{

//ID变成int型数组

int a[4] = {0};

int i=0;

int k=15;

int temp=0;

a[0]=myID_x0010_;

a[1]=myID/10_x0010_;

a[2]=myID/100_x0010_;

a[3]=myID/1000;

for(int j=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;j

for(i=0;i<16*M;i++) { if(Sal[i] == 0) Sa[i] = -1; else Sa[i] = Sal[i]; }

Dft(Sa,16*M); }

void SigTranmit::Lpf()//低通{ Conv(Sa,GetH1()); Dft(Sa,16*M); }

void SigTranmit::Dft(float x[],int m)//DFT变换{ for(int k=0;k

AI[k]=0; for(int i=0;i

void SigTranmit::modulate()//调制{ float a=0.0; for(int i=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); }

void SigTranmit::Channel()//信道{ Noise(myIntensity); for(int i=0;i<16*M;i++) Sa[i] = No[i] + Sa[i]; Dft(Sa,16*M); }

void SigTranmit::Noise(int inten)//噪声{ int i,k; float r0=0.0; float r[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); }

void SigTranmit::Bpf()//带通{ int i;

float a=(N-1)/2; //生成理想带通滤波器的单位取样响应for(i=0;i

Hb[i]=sin(0.7*PI*(i-a))/(float)(PI*(i-a))-sin(0.3*PI*(i-a))/(float)(PI*(i-a)); } switch(c) { case 0: {for(i=0;i

Wn[i]=0.5*(1.0-cos(2.0*PI*i/(N-1)));}; break; case 1: { for(i=0;i

Wn[i]=0.54-0.46*cos(2.0*PI*i/(N-1));}; break; case 2: //生成布莱克曼窗

{ for(i=0;i

}; } for( i=0;i

专业资料

..

} Conv(Sa,GetHb()); Dft(Sa,16*M); }

void SigTranmit::Demodulate()//解调{ float a=0.0; for(int i=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); }

void SigTranmit::Adjust()//判决{ int k=0; int j=0; for(int i=0;i<16;i++) { S1[i]=0;

for(j=0;j

{ for(j=0;j0) { Sa[k]=1;

k++; } else { Sa[k]=-1; k++;

相关文档
最新文档