channel.cpp

来自「QPSK调制Modem的C实现及文档说明」· C++ 代码 · 共 31 行

CPP
31
字号
// definition of channel
#include "GaussianNoiseGenerator.cpp"

class channel
{
  private:
   long seed;
   double variance;
  public:
   channel(){ seed = -300; variance=1;}  /* seed must be a negative integer*/
   void SetParameters(double var, long sd) { variance=var; seed=sd; }
   void AddAWGN(char InFile[],char Out1[],char Out2[],long int NumSamples);
};

void channel::AddAWGN(char InFile[],char Out1[],char Out2[],long int NumSamples)
{ ifstream ReadFromFile(InFile,ios::in);
  ofstream WriteChannelSample(Out1,ios::out);
  ofstream WriteNoiseSample(Out2,ios::out);
  double temp1,temp2;
   cout<<"Adding AWGN(variance="<<variance<<" Mean=0)..."<<endl;
   for (int i=0; i<NumSamples; ++i)
   { ReadFromFile>>temp1;
     temp2=sqrt(variance)*Gaussian(&seed);
     temp1=temp1+temp2;                     /* add noise here */
     WriteChannelSample<<temp1<<endl;
     WriteNoiseSample<<temp2<<endl;
   }
}
 

⌨️ 快捷键说明

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