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

📄 reconst.h

📁 超声波成像算法
💻 H
字号:
/****************************INCLUDE***************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <time.h>
/*****************************DEFINE****************************************/
#define	DIST(x,y,z)	(sqrt((double)((x)*(x)+(y)*(y)+(z)*(z))))
#define M_PI	3.14159265358979323846264338
#define	TRFRQ	2000000.0			/* Carrier Frequency     悈拞	*/
#define	SPFRQ	16000000.0			/* Sampling Frequency    悈拞	*/
#define	SPRATE	(SPFRQ/TRFRQ)		/* Sampling Rate           */
#define	NTIME	2048		/* Sampling Number         */
#define	CYNUM	2			/* Cycle Number            */
#define	MOD2	2			/* 'Mod 2' Indicater       */
#define	NAMMOD	"MOD2"			/* Name String of 'Mod 2'  */
#define	STRLEN	255
/*************************** Gloabal Variables *******************************/
double	Unitlength, Temp, Distm,  Dist400;
double	Onsoku;
double	Trfrq, Spfrq, Sprate, Lambda;
int		*Wal;
/***************************峔憿懱偺掕媊************************************/
typedef struct complex16{double real,imag;} COMPLEX16;
// 埵抲儀僋僩儖峔憿懱
typedef struct position_vector {//埵抲(x,y,z)丆嫍棧range丆妏搙乮theta,phai乯
	double	x,y,z,range,theta,phai;
} PVect;
//  傾儗僀偺僷儔儊乕僞傪傑偲傔偨峔憿懱 
typedef struct Arrayinf {
	double	*tx_m,*ty_m,*tx,*ty;  // 僩儔儞僗儈僢僞偺倶丆倷嵗昗 
	double	*tx_mp,*ty_mp,*txp,*typ; // 僩儔儞僗儈僢僞偺嵗昗傊偺億僀儞僞
	double	*rx_m,*ry_m,*rx,*ry;     // 儗僔乕僶偺嵗昗傊偺億僀儞僞  
	double	*rx_mp,*ry_mp,*rxp,*ryp; //* 儗僔乕僶偺嵗昗傊偺億僀儞僞
	int		tnum,rnum;           // 僩儔儞僗儈僢僞,儗僔乕僶偺屄悢
	double	radTr,radRc;//    僩儔儞僗儈僢僞/儗僔乕僶傾儗僀偺敿宎
	double	dl;         //    堦慺巕偺悺朄
	double	directfct;  //    巜岦惈寁嶼偺偨傔偺學悢
	int		directnum;//      巜岦惈娭悢僥乕僽儖偺億僀儞僩悢
	double	*sinc;    //丂丂丂巜岦惈娭悢偺僥乕僽儖偺愭摢傊偺億僀儞僞
	int		*ttau;	//		  憲怣僞僀儈儞僌偺攝楍 
	char	name[STRLEN]; // 傾儗僀偺僼傽僀儖柤 
} AINF;
/* 僨乕僞廂廤僔僗僥儉偺僷儔儊乕僞傪傑偲傔偨峔憿懱 */
typedef struct DAQinf {
	int		nsht; /* 僔儑僢僩悢 */
	int		ntime;/* 帪娫僒儞僾儖悢 */
	int		ad_delay;  /*A/D僗僞乕僩偺抶墑帪娫(僒儞僾儖悢扨埵乯            */
	double	distm; //懳徾傑偱偺嫍棧[m]
	double	trfrq; /* 憲怣廃攇悢       */
	double	spfrq;     /* 僒儞僾儕儞僌廃攇悢             */
	double	sampratio;  /* 挻壒攇偺僉儍儕傾摉傝偺僒儞僾儖悢 */
	double	unitlength;     /* 扨埵挿乮侾僒儞僾儖娫偵壒偑恑傓嫍棧乯*/
	char	tmethod[STRLEN] ;  /* 憲怣偺曽朄 */
	char	tagname[STRLEN];/* 僞乕僎僢僩僨乕僞偺僼傽僀儖柤 */
	char	echoname[STRLEN]; /* 僄僐乕偺僼傽僀儖柤 */
} DAQINF;

//  嵞惗忦審偵娭偡傞僷儔儊乕僞
typedef struct {
	double	distm; //懳徾傑偱偺嫍棧[m]
	double	vol_size; //憸嵞惗椞堟偺斖埻[mm]
	int		nx;//x曽岦暘妱悢
	int		ny;//y曽岦暘妱悢
	int		nz;//z曽岦暘妱悢
	double	range; //嫍棧偺斖埻[m]
	double	range_min; //嫍棧偺嵟彫抣[攇挿扨埵]
	int		n_range; //嫍棧偺暘妱悢
	double	theta_max; //帇栰妏乮敿妏乯
	int		n_theta; //帇栰妏偺暘妱悢
	int		n_sector;//娫堷偒屻偺嫍棧曽岦暘妱悢
	int		n_band;//懷堟偺僒儞僾儖悢
	int		n_depth;//墱峴偒偺椞堟暘妱悢
	double	*depths;//椞堟偺嫬奅
} VIEWINF;
	
/***************************娭悢偺掕媊************************************/
void Input_DATA_i(char [],int *);
void Input_DATA_d(char [],double *);
void FFT(int,double *, double *, double );
int * fileread(AINF *array, DAQINF *daq);/*    傾儗僀僨乕僞偲僼傿儖僞學悢僨乕僞傪撉傒崬傓娭悢   */
void Input_DATA_s(char s[100],char *data);
void WaveFront0(AINF array,int N_time,int N_band,int i_delay,int i_shot,
				COMPLEX16 **u_f, PVect p, double *h);
void walsh();
void walsh_ft(int, int ,int , int , COMPLEX16 **);

void LineReconst(AINF array,int N_time,int N_band,int i_delay,int i_shot, COMPLEX16 **wal_f,
				 PVect p, int N_depth, double *depths, int nb,double *h, COMPLEX16 *rec, COMPLEX16 *s);
void CsvFileOpen(char *);
void CsvFileWrite(int ,double *,char *);
void FFTAdWave(int N_rec,int N_time, int N_band, int i_shot, double *h, int *rec, COMPLEX16 *rec_f);

double MaxFind(int N,double *a);
double MaxFindC(int n,COMPLEX16 *a);

void ReadParameter(AINF *array,DAQINF *daq);

COMPLEX16 **alloc_complex2d(int size_x, int size_y);
COMPLEX16 *alloc_complex(int size);
double *alloc_d();  int *alloc_i();


⌨️ 快捷键说明

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