Sorry I missed a chunk off the last email!
Here's my solution to normalising and stacking:
First a little change to the iqnorm script, to change
the first field from a timestamp to a record number:
#!/usr/bin/awk -f
BEGIN{
idx = 0;
sum_square = 0
}
{
stamp[idx] = NR #### Changed to record number NR
ival[idx] = $2
qval[idx] = $3
sum_square += $2*$2 + $3*$3
idx++
if( idx == 300)
{
rms = sqrt( sum_square/idx)
for( i = 0; i < idx; i++)
printf( "%s %.5e %.5e\n", stamp[i], ival[i]/rms, qval[i]/rms)
idx = 0;
sum_square = 0
}
}
I've saved this as iqnorm2
I have the .wav files in a sub-directory, eg:
ls -l W1VD
-rw-rw-rw- 1 root root 131200 2018-03-01 12:27 01.wav
-rw-rw-rw- 1 root root 131200 2018-03-02 13:45 02.wav
-rw-rw-rw- 1 root root 131200 2018-03-03 12:26 03.wav
-rw-rw-rw- 1 root root 131200 2018-03-04 16:22 04.wav
-rw-rw-rw- 1 root root 131200 2018-03-05 14:00 05.wav
-rw-rw-rw- 1 root root 131200 2018-03-06 12:40 06.wav
-rw-rw-rw- 1 root root 131200 2018-03-07 16:33 07.wav
-rw-rw-rw- 1 root root 131200 2018-03-08 14:41 08.wav
-rw-rw-rw- 1 root root 131200 2018-03-10 12:53 10.wav
-rw-rw-rw- 1 root root 131200 2018-03-11 17:28 11.wav
-rw-rw-rw- 1 root root 131200 2018-03-12 21:05 12.wav
-rw-rw-rw- 1 root root 131200 2018-03-13 15:08 13.wav
-rw-rw-rw- 1 root root 131200 2018-02-26 13:59 26.wav
-rw-rw-rw- 1 root root 131200 2018-02-27 14:13 27.wav
Now a script to normalise and stack. This uses the
standard unix join command instead of vtjoin, since
the files are already ASCII and all share the same
record number, we can just join on column 1:
#!/bin/bash
dir=$1
rm -f stack.dat
for file in $(ls $dir/*.wav)
do
vtwavex $file |
vtraw -oa |
./iqnorm2 > temp.dat
[ ! -f stack.dat ] && {
# first file
mv temp.dat stack.dat
} || {
# subsequent files
join stack.dat temp.dat | awk '{
printf( "%s %.5e %.5e\n", $1, $2 + $4, $3 + $5)
}' > new.dat
mv new.dat stack.dat
}
done
Save that as, say, normstack and make executable.
Then I run
./normstack W1VD
which produces a stack.dat, then
cat stack.dat | ebnaut -dp16K21A -r0.4572395 -T 198.3 -F0.1 ...
Similarly,
./normstack K3SIW
cat stack.dat | ebnaut -dp16K21A -r0.771603 -T 216 -F0.0 ...
This works because ebnaut ignores the timestamp (or whatever else)
in column 1.
--
Paul Nicholson
--
|