收藏 分销(赏)

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

上传人:二*** 文档编号:4571409 上传时间:2024-09-30 格式:DOC 页数:13 大小:4.35MB 下载积分:5 金币
下载 相关 举报
燕山大学数字通信计算机仿真课程设计报告模板.doc_第1页
第1页 / 共13页
本文档共13页,全文阅读请下载到手机保存,查看更方便
资源描述
. .     数字通信计算机课设  程序代码  // SigTranmit.cpp: implementation of the SigTranmit class.  //  //////////////////////////////////////////////////////////////////////   #include "stdafx.h"  #include "ASK.h"  #include "SigTranmit.h"  #include <math.h>   #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%10;   a[1]=myID/10%10;   a[2]=myID/100%10;   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<M;j++)   {    Sal[k]=S0[i];    k++;   }  }  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<m;k++)  {   AR[k]=0;   AI[k]=0;   for(int i=0;i<m;i++)   {    AR[k] =AR[k] + x[i]*cos(2*PI*k*i/m);     AI[k] =AI[k] + x[i]*sin(2*PI*k*i/m);   }   A[k] = sqrt(AR[k]*AR[k] + AI[k]*AI[k]);  }  }  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<N;i++)  {   if(i==a)     Hb[i]=(float)0.4;   else     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<N;i++)    Wn[i]=0.5*(1.0-cos(2.0*PI*i/(N-1)));};   break;  case 1:   {    for(i=0;i<N;i++)     Wn[i]=0.54-0.46*cos(2.0*PI*i/(N-1));};    break;  case 2:  //生成布莱克曼窗   {    for(i=0;i<N;i++)     Wn[i]=0.42-0.5*cos(2.0*PI*i/(N-1))+0.08*cos(4.0*PI*i/(N-1));   };  }  for( i=0;i<N;i++)  {   Hb[i]=Hb[i]*Wn[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<M;j++)   {    S1[i] += Sa[k];    k++;   }  }  k=0;  for(i=0;i<16;i++)  {   for(j=0;j<M;j++)   {    if(S1[i]>0)    {     Sa[k]=1;     k++;    }    else    {     Sa[k]=-1;     k++;  . .word.zl.
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服