📄 channel.h
字号:
#include <complex>
using namespace std;
class channel
{public:
int numberofuserbit; //信息bit数
double SNRdB; //信噪比db表示
double SNR; //信噪比 Es/N0
int Tb ; //信息码的间隔时间
int Tspreadfactor ; //时域扩频因子
int Fspreadfactor ; //频域扩频因子
int numberofpath ; //径数
int flat ; //flat fading or not
//(1->flat (only amplitude is fluctuated),0->nomal(phase and amplitude are fluctutated)
int rayornot ;
double sigma; // 方差 attenuation level caused by Eb/No or C/N
// int mean ; //均值
double SignalPower; //信号功率
double N0; //噪声平均功率 gauss噪声平均功率为其方差
void AWGN( ); //信号通过高斯信道
double **ChannelRealIn; //进入信道序列的实部
double **ChannelImagIn; //进行信道序列的虚部
double **ChannelRealOut; //离开信道序列的实部
double **ChannelImagOut; //离开调制后的序列的虚部
double tstp ; //最小时间分辨率 tstp = 1 / sr / IPOINT(采样点) / clen(clen = length(mesq));
int itau[10] ; //Arrival time for each multipath normalized by tstp//数组大小=径数
double dlvl[10] ; //Mean power for each multipath normalized by direct wave.//数组大小=径数
//dlvl = [0 ,10 ,20 ,25];This means that the second path is -10dB less than the first direct path.
double th[10] ; //Initial Phase of delayed wave//数组大小=径数//th1=[0.0,0.0,0.0,0.0];
double itnd ; //Number of fading counter to skip (50us/0.5us) nd*(fftlen+gilen)*10;
double itn[10]; //Initial value of fading counter//itnd1=[1000,2000, 3000, 4000];
int nsamp ; //Number of samples to be simulated
int fd ; //% Maximum Doppler frequency [Hz]
int n0[10] ; //number of waves in order to generate fading//数组大小=径数
//n0=[6,7,6,7];% In normal case, more than six waves are needed to generate Rayleigh fading
void frequencyselectingfade(); //生成frequencyselectingfading信道
protected:
private:
double normalnumber[100]; //正态分布的随机数
double *inoise ; //每点噪声值
double *ramp ; // Amplitude contaminated by fading
double *rcos ; //Cosine value contaminated by fading
double *rsin ; //Cosine value contaminated by fading
// int SpreadOut[100][100] ; //扩频后的信息码
void randn(double *,double ,double ,double ,int ); //产生正态分布的随机数
void AWGN( int ); //信号通过AWGN信道
void Rayleighfade(double *,double *,double *,double *,double,int); //生成Rayleigh信道
void delay(double *,double *,double *,double *,int); //产生延迟
double **Allocate2DArray( unsigned int, unsigned int ); //动态分配二维数组double
void DeAllocate2DArray(double **,unsigned int); // 释放动态分配的二维数组double
int **intAllocate2DArray(unsigned int,unsigned int ); //动态分配二维数组int
void intDeAllocate2DArray( int **,unsigned int); // 释放动态分配的二维数组int
double **sefadeRealOut; //通过频率选择性衰落后序列的实部
double **sefadeImagOut; //通过频率选择性衰落后序列的虚部
//void QPSK(int); //进行qpsk调制
//void FFT(complex<double> * ,complex<double> * ,int,int); //进行FFT变换和逆变换
//int num;
//char name[20];
//char sex;
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -