/******************************************************** * Calculate signal to noise ratio for SAC data * within specified time window * modified from sac_e * Usage: * sac_e -A(0-9,-5(b),-3(o),-2(a)) -Ssingal_start_time -Nnoise_start_time * -Wtime_window sac_files ... * Note: negativ noise or signal start time means shifting * to the left relative to the alignment (b, o, a, t0, etc) * Modified from lsac2, by Zhigang Peng, Fri Aug 9 11:13:54 PDT 2002 ********************************************************/ #include #include #include #include #include #include "sac.h" #include "Complex.h" int main(int argc, char **argv) { SACHEAD hd; int i,j,nt1,nt2,st1,st2, error,nrdc, p_arr, s_arr; float *trace, align; float twin, sst, nst, ntwin, stwin, signal, signal_mean, noise, noise_mean, snr; error = 0; nrdc = -5; /* default, align from begining */ /* input parameters */ for (i=1; !error && i < argc; i++) { if (argv[i][0] == '-') { switch(argv[i][1]) { case 'S': sscanf(&argv[i][2],"%f",&sst); break; case 'N': sscanf(&argv[i][2],"%f",&nst); break; case 'W': sscanf(&argv[i][2],"%f",&twin); break; case 'A': sscanf(&argv[i][2],"%d",&nrdc); break; default: error = 1; break; } } } if (argc < 4 || error) { fprintf(stderr, "Usage: %s -A(0-9,-5(b),-3(o),-2(a)) -Ssingal_start_time \n\ -Nnoise_start_time -Wtime_window sac_files \n\ Calculate signal to noise ratio for SAC data \n\ within specified time window \n",argv[0]); return -1; } for (i=1;ihd.npts-2) nt2=hd.npts-2; st1= (int) ((align+sst)/hd.delta);if(st1<1) st1=1; st2= (int) ((align+sst+twin)/hd.delta);if(st2>hd.npts-2) st2=hd.npts-2; if (nt1>nt2 || st1 > st2) { fprintf(stderr,"time window for the noise or signal is less than 1 for %s\n",argv[i]); continue; }else if ((nt2>st1 && nt2st1 && nt1s_arr) || (nrdc == 0 && st1nt1 && p_arrnt1 && s_arr