Go to the documentation of this file.
7 void anal_noise(int32 rec, int32 nrec, int32 nscans, int32 nsamp,
8 int32
nbands,
int16 *i16buf,
int *spike_cnt,
float *line_sd,
9 int32_t *cnt_coin_jmp, int32_t *jmp_hist)
51 int rec_num, irec, ibnd, ipix;
52 short *spike_jmp, pixm1, pix, pixp1, isum;
53 double apx, sum,
sumsq, pix_jmp, sd;
57 int32_t neighbor_diff;
59 if ((spike_jmp = (
short *) malloc(
nbands * nsamp *
sizeof (
short)))
61 printf(
"\n*****anal_noise: program error, unable to allocate space\n");
69 for (irec = 0; irec < nrec; irec++, rec_num++) {
70 for (ibnd = 0; ibnd <
nbands; ibnd++) {
81 for (ipix = 1; ipix < (nsamp - 1); ipix++) {
82 pixm1 = *(i16buf + ibnd +
nbands * ((ipix - 1) + nsamp * irec));
83 pix = *(i16buf + ibnd +
nbands * (ipix + nsamp * irec));
84 pixp1 = *(i16buf + ibnd +
nbands * ((ipix + 1) + nsamp * irec));
85 neighbor_diff =
abs(pixm1 - pixp1);
86 pix_jmp =
fabs(pix - (pixm1 + pixp1) / 2.);
92 *(spike_jmp + ibnd +
nbands * ipix) = 0;
93 if (pix_jmp > 15 && neighbor_diff < 200) {
94 if (pix_jmp > jfact * neighbor_diff) {
95 (*(spike_cnt + ibnd +
nbands * rec_num))++;
96 *(spike_jmp + ibnd +
nbands * ipix) = pix_jmp;
102 (*(jmp_hist + (
int) pix_jmp))++;
115 sd =
sumsq / nsamp - sum * sum / (nsamp * nsamp);
116 sd = (sd > 0) ? sqrt(sd) : 0.;
117 *(line_sd + ibnd +
nbands * (rec_num)) = (
float) sd;
125 for (ipix = 1; ipix < nsamp - 1; ipix++) {
127 for (ibnd = 0; ibnd <
nbands; ibnd++) {
128 if (*(spike_jmp + ibnd +
nbands * ipix) > 0)
136 (* (cnt_coin_jmp + isum - 1))++;
unsigned long long sumsq(signed short *in, int cnt)
integer, parameter double
void anal_noise(int32 rec, int32 nrec, int32 nscans, int32 nsamp, int32 nbands, int16 *i16buf, int *spike_cnt, float *line_sd, int32_t *cnt_coin_jmp, int32_t *jmp_hist)