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

📄 rec_signal.h

📁 这是本人编写的软件接收机
💻 H
字号:
//------------------------------------------------------------------------------
//
// REC_signal.h
//
// Purpose:
//
//   signal declearation for DSP
//
// Reference:
//
//
// Notes:
//
//   This software is protected by national and international copyright.
//   Any unauthorized use, reproduction or modificaton is unlawful and
//   will be prosecuted. Commercial and non-private application of the
//   software in any form is strictly prohibited unless otherwise granted
//   by the authors.
//
//   The code is provided without any warranty; without even the implied
//   warranty of merchantibility or fitness for a particular purpose.
//
// Last modified:
//
//   2007/11/04  YI Weiyong (1st edition)
//
// (c) 2007-2009  YI Weiyong
//
//------------------------------------------------------------------------------

#ifndef INC_SIGNAL_H
#define INC_SIGNAL_H

#include <iostream>

typedef  int accuracy;

class CSignal{

     public:

     friend class CFixedFFT;

     // constructor & destructor
     CSignal():m_n(0)
     {
		 data = 0;
     };

     CSignal(unsigned int _n);
     CSignal(accuracy *p, unsigned int _n);
     CSignal(const CSignal& _sig);

     ~CSignal();

     // Assignment
     CSignal& operator=(const accuracy _val);
     CSignal& operator=(const CSignal& _sig);
     void Set(int *p, unsigned int _n);

     // Component access
     accuracy operator () (int i) const {return data[i];};
     accuracy& operator () (int i) {return data[i];};

     // methods
     unsigned int size() const {return m_n;};
     void Resize(unsigned int _n);
     CSignal Resample(double factor);
     void Resample(CSignal& ReSampledSig, double factor);
     void ZeroPadding(const unsigned int& numberOfZeros = 0);
     CSignal slice(int first, int last) const;
     void shift(int n);
     CSignal PSD();
     accuracy Max(int& _Index);
     accuracy Max();
     int MaxIndex();
     void ZeroDC();
     accuracy Mean();
     void PassFIR(const CSignal& _coef_b);

     // friend functions
      friend long Correlate(const CSignal& _sig1, const CSignal& _sig2, int delay = 0);
      friend std::ostream& operator << (std::ostream& os, const CSignal& Vec);

      friend CSignal ShiftProd(const CSignal& _sig1, const CSignal& _sig2, int delay = 0);
      friend CSignal Sine(double freq, double fs, double start =0.0, int n = 100, int scale=1024);
      friend CSignal Stack(const CSignal& _sig1, const CSignal& _sig2);
      friend CSignal operator * (const CSignal& _sig1, const CSignal& _sig2);
      friend CSignal operator * (const CSignal& _sig1, const accuracy& _val);
      friend CSignal operator + (const CSignal& _sig1, const CSignal& _sig2);
      friend CSignal operator - (const CSignal& _sig1, const CSignal& _sig2);
      friend CSignal operator - (const CSignal& _sig1, const accuracy& _val);
      friend CSignal CACode(unsigned int PRN);
      friend CSignal Randn(unsigned int n, double variance=1.0, double scale=1024);
      friend CSignal operator - (const CSignal& _sig);
      friend CSignal sig_sqrt(const CSignal& _sig);
      friend CSignal Magnitude(const CSignal& _sig1, const CSignal& _sig2);
      friend CSignal ZeroDC(const CSignal& _sig);
      friend void fft(CSignal& _real, CSignal& _imag, int sign=1);

     // Elements
     private:

     unsigned int m_n;                // the dimension of the FFT
     accuracy *data;

 };



int fix_sqrt (int x);
int rss (int a, int b);
int fix_atan2 (int y, int x);

//template <class type1=float>
void fft(float *reel, float *imag, int mm, int sign=1);



//------------------------------------------------------------------------------
//
// CFixedFFaccuracy (class definition)
//
// Purpose:
//
//   Fixed point fast fourier transform
//
//------------------------------------------------------------------------------

class CFixedFFT{

     public:

     // constructor & destructor
     CFixedFFT():m_n(0), EXP(0)
     {Sinewave = 0; };
     CFixedFFT(unsigned int _n);
     ~CFixedFFT();

     // methods
     int CFixedFFT::FFT(CSignal& _re, CSignal& _im, short _scale=0);

     private:

     unsigned int m_n;                // the dimension of the FFT
     unsigned int EXP;                // log2(m_n)
     int *Sinewave;                       // real part of twiddle factor lookup table

 };

#endif

⌨️ 快捷键说明

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