📄 reconst.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 + -