📄 makelinelut.c
字号:
/* LineReconst */
/* 侾儔僀儞忋偺憸嵞惗傪FFT傪梡偄偰崅懍偵寁嶼 */
#include <math.h>
#include "Reconst.h"
void MakeLineLUT(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 ib,
double *h, COMPLEX16 *rec, COMPLEX16 *s)
/* 堷悢丗
/* AINF array 丗傾儗僀偵娭偡傞僨乕僞
/* int n_time 丗帪娫僒儞僾儖悢
/* int n_band 丗廃攇悢僒儞僾儖悢
/* int i_delay 丗A/D曄姺偺抶傟帪娫乮僒儞僾儖悢乯
/* COMPLEX16 wal_f[i][j]丗i斣栚偺憲怣攇宍偺戞j僼乕儕僄惉暘
/* PVect p 丗埵抲儀僋僩儖
/* int n_depth 丗墱峴偒偺暘妱悢乮嬤帡惛搙傛傝寛掕乯
/* double depths[]丗墱峴暘妱椞堟偺嫬奅偲拞怱偺嫍棧
/* int ib 丗
/* double h[] : 嶌嬈梡攝楍乮悺朄n_time*4乯
/* 僄僐乕攇宍偺僼乕儕僄惉暘偑寁嶼偝傟偰栠傞
/* COMPLEX16 rec[j]丗i斣栚偺庴怣攇宍偺戞j僼乕儕僄惉暘偼
/* rec[n_band*i+j]偱梌偊傜傟傞
/* COMPLEX16 s[]丗暋慺悢偺嵞惗憸
/* s[ib+j]丗1儔僀儞偺j斣栚偺夋慺
/************************************************************/
{
int i, i_depth, i_freq,
i_start, i_end, i_middle, i_bias,index, nsamp;
double *h1_real,*h1_imag,*h2_real,*h2_imag;
double Krx, Kry, Krz, drc, y0,z0, phase, buf1=0;
double L=0,Lmax=0,amp1=1,amp2=1,noise=0;
int tau_min, tau_max, tau_s_min, tau_s_max,n_bias;
double tau, tau_bias, dtheta,cos_th,sin_th, low=10.0;
double R_min,R_max,R_start, R_end, R_middle;
COMPLEX16 cx;
dtheta = 2*M_PI/(double)n_time;
tau_bias=(double)(i_delay)/2.0;
h1_real=h;
h1_imag=h+ n_time;
h2_real=h+2*n_time;
h2_imag=h+3*n_time;
nsamp=(int)(SPRATE*CYNUM*array.tnum);
R_min=depths[0];/* 憸嵞惗椞堟偺嵟彫墱峴偒*/
R_max=depths[2*n_depth];/* 憸嵞惗椞堟偺嵟戝墱峴偒*/
tau_min=(int)(R_min*SPRATE*2.0);/* 憸嵞惗椞堟偱掕傑傞抶墑嵟彫抣*/
tau_max=(int)(R_max*SPRATE*2.0);/* 憸嵞惗椞堟偱掕傑傞抶墑嵟戝抣*/
tau_s_min=i_delay; /*應掕僔僗僥儉偱掕傑傞抶墑嵟彫抣*/
tau_s_max=i_delay+n_time-nsamp /*應掕僔僗僥儉偱掕傑傞抶墑嵟戝抣*/
-2*(int)(SPRATE*(array.radRc+array.radTr));
if(tau_min>tau_s_max || tau_max<tau_s_min) return;
n_bias=4*n_time;
//n_depth=8;
for(i_depth=0;i_depth<n_depth;i_depth++){
R_start=depths[2*i_depth];
R_middle=depths[2*i_depth+1];
R_end=depths[2*i_depth+2];
i_end=(int)(R_end*SPRATE*2.0)-tau_min;
i_middle=(int)(R_middle*SPRATE*2.0)-tau_min;
i_start=(int)(R_start*SPRATE*2.0)-tau_min;
if((i_start<tau_s_max-tau_min)&&(i_end>tau_s_min-tau_min)){
p.range=R_middle;
p.x=R_middle*sin(p.theta);
y0=R_middle*cos(p.theta);
z0=R_middle*cos(p.theta);
p.y=y0*sin(p.phai);
p.z=z0*cos(p.phai);
WaveFront0(array,n_time,n_band,i_delay,i_shot, wal_f, p,h);
array.rxp=array.rx;
array.ryp=array.ry;
}//end if
}//i_depth loop
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -