燕山大学数字通信计算机仿真课程设计报告模板.doc
-
资源ID:48877236
资源大小:4.35MB
全文页数:13页
- 资源格式: DOC
下载积分:8金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
燕山大学数字通信计算机仿真课程设计报告模板.doc
. . 数字通信计算机课设 程序代码 / 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; /* S016=0; float S116=0;Mod16*M=0; Sa16*M=0; Sal16*M=0; H116*M=0; H216*M=0; No16*M=0; HbN=0; PN=0; WnN=0;*/ SigTranmit:SigTranmit() void SigTranmit:SetDigital(int ID,int Intensity)/赋值 myID=ID; myIntensity=Intensity; void SigTranmit:Basesignal()/基带信号 /ID变成int型数组int a4 = 0; int i=0; int k=15; int temp=0; a0=myID%10; a1=myID/10%10; a2=myID/100%10; a3=myID/1000; for(int j=0;j<4;j+) i=0; temp=aj; for(i;i<4;i+) S0k=temp & 0x1; temp = temp>>1; k-; /采样 k=0; for(i=0;i<16;i+) for(j=0;j<M;j+) Salk=S0i; k+; for(i=0;i<16*M;i+) if(Sali = 0) Sai = -1; else Sai = Sali; 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+) ARk=0; AIk=0; for(int i=0;i<m;i+) ARk =ARk + xi*cos(2*PI*k*i/m); AIk =AIk + xi*sin(2*PI*k*i/m); Ak = sqrt(ARk*ARk + AIk*AIk); void SigTranmit:modulate()/调制 float a=0.0; for(int i=0;i<16*M;i+) a=2.0*PI*i*0.15; Modi = Sai*cos(a); for(i=0;i<16*M;i+) Sai = Modi; Dft(Sa,16*M); void SigTranmit:Channel()/信道 Noise(myIntensity); for(int i=0;i<16*M;i+) Sai = Noi + Sai; Dft(Sa,16*M); void SigTranmit:Noise(int inten)/噪声 int i,k; float r0=0.0; float r12; for(k=0; k<16*M; k+) for(i=0; i<12; i+) ri = (float)(2*rand()-RAND_MAX)/RAND_MAX; r0 += ri; r0 = float(inten*r0/12.0); Nok = r0; Dft(No,16*M); void SigTranmit:Bpf()/带通 int i; float a=(N-1)/2; /生成理想带通滤波器的单位取样响应 for(i=0;i<N;i+) if(i=a) Hbi=(float)0.4; else Hbi=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+) Wni=0.5*(1.0-cos(2.0*PI*i/(N-1); break; case 1: for(i=0;i<N;i+) Wni=0.54-0.46*cos(2.0*PI*i/(N-1); break; case 2: /生成布莱克曼窗 for(i=0;i<N;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;i<N;i+) Hbi=Hbi*Wni; 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; Modi = Sai*cos(a); for(i=0;i<16*M;i+) Sai = Modi; Dft(Sa,16*M); void SigTranmit:Adjust()/判决 int k=0; int j=0; for(int i=0;i<16;i+) S1i=0; for(j=0;j<M;j+) S1i += Sak; k+; k=0; for(i=0;i<16;i+) for(j=0;j<M;j+) if(S1i>0) Sak=1; k+; else Sak=-1; k+; . .word.zl.