⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dqpskmodem.cpp

📁 QPSK调制Modem的C实现及文档说明
💻 CPP
字号:
 /*********************************************************************
  * This program simulates a 4800 bps DQPSK modem. It is a bit stream *
  * type modem, i.e. it processes and sends one sample at a time. The *
  * channel is an additive white Gaussian noise channel               *
  *                                                                   *
  * Chan Tong Lam 												June, 1998      *
  *********************************************************************/

/* Define output file names */
#define INPUTPARAMETERS "InputParameters.txt"
#define RANDOMDATA "RandomBitsSent.txt"
#define TRANSMITTEROUTPUT "TransmitterOutput.txt"
#define CHANNELOUTPUT "ChannelOutput.txt"
#define PURENOISE "AWGnoise2.txt"
#define DATASINK0 "DataSink0.txt"        /* noiseless channel */
#define DATASINK1 "DataSink1.txt"        /* noisy channel */
#define DATASTROBES0 "DataStrobes0.txt"  /* noiseless channel */
#define DATASTROBES1 "DataStrobes1.txt"  /* noisy channel */
#define PERFORMANCEBER "BERanalysis.txt"
#define BER "BER.txt"
#define SNR "SNR.txt"
 
/* Borland C++ include files */
#include <stdio.h>
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
#include <complex.h>
#include <math.h>
#include <time.h>

/* User include files*/
#include "DQPSKtransmitter.cpp"
#include "channel.cpp"
#include "DQPSKreceiver.cpp"
#include "PerformanceAnalyzer.cpp"


/* Transmitter constants */
long int NumSymbols=2000;
const int NumTraining=50;
const int TxCarrierPhaseShift=0;     /* in radians */

/* Channel constants */
/* const double ChannelVariance=772.5; */
const long RandSeed=-300;            /* seed must be a negative integer */

/* Receiver constants */

int main()
{ifstream In(INPUTPARAMETERS,ios::in);
 int starting,ending,step;             /* for AWGNoise variance */
 In>>NumSymbols;
 In>>starting;
 In>>step;
 In>>ending;
 for (int i=starting; i<=ending; i=i+step)
 {double ChannelVariance;
  DQPSKtransmitter TX;
  channel CH;
  DQPSKreceiver RX0(0); /* detection with no noise */
  DQPSKreceiver RX1(1); /* detection with noise */
  PerformanceAnalyzer PAR;    /* calculates BER and SNR */

  /* input parameter */
  ChannelVariance=i;

  /* Transmitter */
  TX.SetParameters(NumSymbols,NumTraining,TxCarrierPhaseShift);
  TX.transmit(TRANSMITTEROUTPUT,RANDOMDATA);        /* write samples to file */

  /* Channel */
  CH.SetParameters(ChannelVariance,RandSeed);
  CH.AddAWGN(TRANSMITTEROUTPUT,CHANNELOUTPUT,PURENOISE,8*NumSymbols);

  /* Receiver */      /* NO NOISE */
  if (!RX0.ReceiveAndDetect(TRANSMITTEROUTPUT,DATASINK0,DATASTROBES0)) break;
  if (!RX1.ReceiveAndDetect(CHANNELOUTPUT,DATASINK1,DATASTROBES1)) break; 

  /* Performance(e.g. BER) analysis */
  PAR.CalculateSNR(DATASTROBES0,PURENOISE);
  PAR.CalculateBER(RANDOMDATA,DATASINK0,PERFORMANCEBER); /* output to a file */
  PAR.CalculateBER(RANDOMDATA,DATASINK1);
 }
return 0;
}






⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -