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

📄 nrutil.c

📁 快速傅立叶变换程序代码,学信号的同学,可要注意了
💻 C
字号:
/* nrutil.c - supplied by the Numerical Recipes folks;   minor modifications made by David MacKay.   Copyright remains with the Numerical Recipes authors */#include <stdlib.h>#include <stdio.h>#include "nrutil.h"void nrerror(const char error_text[]){	fprintf(stderr,"Numerical Recipes run-time error...\n");	fprintf(stderr,"%s\n",error_text);	fprintf(stderr,"...now exiting to system...\n");	exit(1);}void myerror(const char error_text[]){	fprintf(stderr,"%s\n",error_text);}float *vector(int nl,int nh){	float *v;	v=(float *)malloc((unsigned) (nh-nl+1)*sizeof(float));	if (!v) nrerror("allocation failure in vector()");	return v-nl;}int *ivector(int nl,int nh){	int *v;	v=(int *)malloc((unsigned) (nh-nl+1)*sizeof(int));	if (!v) nrerror("allocation failure in ivector()");	return v-nl;}unsigned char *cvector(int nl,int nh){	unsigned char *v;	v=(unsigned char *)malloc((unsigned) (nh-nl+1)*sizeof(unsigned char));	if (!v) nrerror("allocation failure in ivector()");	return v-nl;}double *dvector(int nl,int nh){	double *v;	v=(double *)malloc((unsigned) (nh-nl+1)*sizeof(double));	if (!v) nrerror("allocation failure in dvector()");	return v-nl;}float **matrix(int nrl,int nrh,int ncl,int nch){	int i;	float **m;	m=(float **) malloc((unsigned) (nrh-nrl+1)*sizeof(float*));	if (!m) nrerror("allocation failure 1 in matrix()");	m -= nrl;	for(i=nrl;i<=nrh;i++) {		m[i]=(float *) malloc((unsigned) (nch-ncl+1)*sizeof(float));		if (!m[i]) nrerror("allocation failure 2 in matrix()");		m[i] -= ncl;	}	return m;}double **dmatrix(int nrl,int nrh,int ncl,int nch){	int i;	double **m;	m=(double **) malloc((unsigned) (nrh-nrl+1)*sizeof(double*));	if (!m) nrerror("allocation failure 1 in dmatrix()");	m -= nrl;	for(i=nrl;i<=nrh;i++) {		m[i]=(double *) malloc((unsigned) (nch-ncl+1)*sizeof(double));		if (!m[i]) nrerror("allocation failure 2 in dmatrix()");		m[i] -= ncl;	}	return m;}int **imatrix(int nrl,int nrh,int ncl,int nch){  int i,**m;    m=(int **)malloc((unsigned) (nrh-nrl+1)*sizeof(int*));  if (!m) nrerror("allocation failure 1 in imatrix()");  m -= nrl;    for(i=nrl;i<=nrh;i++) {    m[i]=(int *)malloc((unsigned) (nch-ncl+1)*sizeof(int));    if (!m[i]) nrerror("allocation failure 2 in imatrix()");    m[i] -= ncl;  }  return m;}unsigned char **cmatrix(int nrl,int nrh,int ncl,int nch){  int i;  unsigned char **m;    m=(unsigned char **)malloc((unsigned) (nrh-nrl+1)*sizeof(unsigned char*));  if (!m) nrerror("allocation failure 1 in cmatrix()");  m -= nrl;    for(i=nrl;i<=nrh;i++) {    m[i]=(unsigned char *)malloc((unsigned) (nch-ncl+1)*sizeof(unsigned char));    if (!m[i]) nrerror("allocation failure 2 in cmatrix()");    m[i] -= ncl;  }  return m;}float **submatrix(float **a,		  int oldrl,int oldrh,int oldcl,int oldch,		  int newrl,int newcl){	int i,j;	float **m;	m=(float **) malloc((unsigned) (oldrh-oldrl+1)*sizeof(float*));	if (!m) nrerror("allocation failure in submatrix()");	m -= newrl;	for(i=oldrl,j=newrl;i<=oldrh;i++,j++) m[j]=a[i]+oldcl-newcl;	return m;}/*void free_vector(float *v,int nl,int nh){	free((char*) (v+nl));}*/void free_cvector(unsigned char *v,int nl,int nh){	free((char*) (v+nl));}void free_ivector(int *v,int nl,int nh){	free((char*) (v+nl));}void free_dvector(double *v,int nl,int nh){	free((char*) (v+nl));}void free_matrix(float **m,int nrl,int nrh,int ncl,int nch){	int i;	for(i=nrh;i>=nrl;i--) free((char*) (m[i]+ncl));	free((char*) (m+nrl));}void free_dmatrix(double **m,int nrl,int nrh,int ncl,int nch){	int i;	for(i=nrh;i>=nrl;i--) free((char*) (m[i]+ncl));	free((char*) (m+nrl));}void free_cmatrix(unsigned char **m,int nrl,int nrh,int ncl,int nch){	int i;	for(i=nrh;i>=nrl;i--) free((char*) (m[i]+ncl));	free((char*) (m+nrl));}void free_imatrix(int **m,int nrl,int nrh,int ncl,int nch){	int i;	for(i=nrh;i>=nrl;i--) free((char*) (m[i]+ncl));	free((char*) (m+nrl));}void free_submatrix(float **b,int nrl,int nrh,int ncl,int nch){	free((char*) (b+nrl));}float **convert_matrix(float *a,int nrl,int nrh,int ncl,int nch){	int i,j,nrow,ncol;	float **m;	nrow=nrh-nrl+1;	ncol=nch-ncl+1;	m = (float **) malloc((unsigned) (nrow)*sizeof(float*));	if (!m) nrerror("allocation failure in convert_matrix()");	m -= nrl;	for(i=0,j=nrl;i<=nrow-1;i++,j++) m[j]=a+ncol*i-ncl;	return m;}void free_convert_matrix(float **b,int nrl,int nrh,int ncl,int nch){	free((char*) (b+nrl));}

⌨️ 快捷键说明

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