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

📄 nrutil.h

📁 针对基于DSP的使用C++编译的数字信号的高低频滤波的编程源代码
💻 H
字号:
//nrutil.h
//用于动态数组的申请

#ifndef  _nrutil_h_
#define  _nrutil_h_

/****************************************************************************/
static    float     sqrarg;
#define   SQR(a)    ((sqrarg=(a)) == 0.0 ? 0.0 : sqrarg*sqrarg)

static    double    dsqrarg;
#define   DSQR(a)   ((dsqrarg=(a)) == 0.0 ? 0.0 : dsqrarg*dsqrarg)

static    double    dmaxarg1,dmaxarg2;
#define   DMAX(a,b) (dmaxarg1=(a) , dmaxarg2=(b) , (dmaxarg1) > (dmaxarg2) ? (dmaxarg1) : (dmaxarg2))

static    double    dminarg1,dminarg2;
#define   DMIN(a,b) (dminarg1=(a) , dminarg2=(b) , (dminarg1) < (dminarg2) ? (dminarg1) : (dminarg2))

static    float     maxarg1,maxarg2;
#define   FMAX(a,b) (maxarg1=(a) , maxarg2=(b) , (maxarg1) > (maxarg2) ? (maxarg1) : (maxarg2))

static    float     minarg1,minarg2;
#define   FMIN(a,b) (minarg1=(a) , minarg2=(b) , (minarg1) < (minarg2) ? (minarg1) : (minarg2))

static    long      lmaxarg1,lmaxarg2;
#define   LMAX(a,b) (lmaxarg1=(a) , lmaxarg2=(b) , (lmaxarg1) > (lmaxarg2) ? (lmaxarg1) : (lmaxarg2))

static    long      lminarg1,lminarg2;
#define   LMIN(a,b) (lminarg1=(a) , lminarg2=(b) ,  (lminarg1) < (lminarg2) ? (lminarg1) : (lminarg2))

static    int       imaxarg1,imaxarg2;
#define   IMAX(a,b) (imaxarg1=(a) , imaxarg2=(b) , (imaxarg1) > (imaxarg2) ? (imaxarg1) : (imaxarg2))

static    int       iminarg1,iminarg2;
#define   IMIN(a,b) (iminarg1=(a) , iminarg2=(b) , (iminarg1) < (iminarg2) ? (iminarg1) : (iminarg2))

#define   SIGN(a,b) ((b) >= 0.0 ? fabs(a) : -fabs(a))

//#if  define(__STDC__) || defined(ANSI) || defined(NRANSI) /* ANSI */

void            nrerror( char *error_text);          //申请错误
float           *fvector( long nl,long nh );          //申请一维浮点型数组
int             *ivector(long nl,long nh );          //申请一维整型数组
unsigned  char  *cvector(long nl,long nh );          //申请一维字符型数组         
unsigned  long  *lvector(long nl,long nh );          //申请一维长整型数组
double          *dvector(long nl,long nh );          //申请一维双精度数组

//////////////////////////////////////////////////////////////////////////////

float           **matrix(long nrl,long nrh,long ncl,long nch);  //申请二维浮点型数组
double          **dmatrix(long nrl,long nrh,long ncl,long nch);  //申请二维双精度型数组
int             **imatrix(long nrl,long nrh,long ncl,long nch);  //申请二维整型数组
unsigned  char  **cmatrix(long nrl,long nrh,long ncl,long nch);  //申请二维字符型数组

/////////////////////////////////////////////////////////////
float           **submatrix(float **a,long oldrl,long oldrh,long oldcl,long oldch,long newrl,long newcl);
                                                     //申请二维浮点型下标数组
float           **convert_matrix(float *a,long nrl,long nrh,long ncl,long nch);
                                                     //申请二维数组的一位形式
float           ***f3tensor(long nrl,long nrh,long ncl,long nch,long ndl,long ndh);
                                                     //申请三维浮点型数组

//////////////////////////////////////////////////////////////////////////////
/****************************************************************************/
/****************************************************************************/
/****************************************************************************/
//////////////////////////////////////////////////////////////////////////////

void     free_fvector( float  *v,long nl,long nh);
void     free_ivector(int    *v,long nl,long nh);
void     free_cvector(unsigned char *v,long nl,long nh);
void     free_lvector(unsigned long *v,long nl,long nh);
void     free_dvector(double *v,long nl,long nh);

/////////////////////////////////////////////////////////////////////////////

void     free_matrix( float  **m,long nrl,long nrh,long ncl,long nch);
void     free_dmatrix(double **m,long nrl,long nrh,long ncl,long nch);
void     free_imatrix(int    **m,long nrl,long nrh,long ncl,long nch);
void     free_cmatrix(unsigned char **m,long nrl,long nrh,long ncl,long nch);
void     free_submatrix(float  **b, long nrl,long nrh,long ncl,long nch);
void     free_convert_matrix(float  **b,long nrl,long nrh,long ncl,long nch);
void     free_f3tensor(float ***b,long nrl,long nrh,long ncl,long nch,long ndl,long ndh);
/****************************************************************************/
#endif//_nrutil_h_


⌨️ 快捷键说明

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