Hi Paul,
Thanks for the script. I tried it out using the 2 character message
decoded by W1VD some weeks ago.
I confirm it works well!
Since i know there are some vlfrx tools newcomers (like me), i post a
capture in the attachment which may explain basic steps. Maybe it is
useful for some...
First i took your new normstack script and worked out the decode of the
3 stacked transmissions.
Then i used your normal stacking tool, without the normalisation. The
message is in there at 3.2 dB SNR only and we see no decode.
Using Markus' add.exe i produced sum212223.wav. add.exe is also without
normalisation. But this wav file produces a decode and the SNR shown is
10.72 dB.
Now i wonder why there is not the same result as when using ./stack ...
Have i done something wrong or is there some kind of incompatibility?
Currently i see no way to use your normalisation script (iqnorm2) to
normalise the txt files produced by SpecLab. It would be interesting to
see if there can be an even better result when normalising with iqnorm2,
then stacking with Markus' add.exe and then decoding as usual with vlfrx
tools.
Any ideas or suggestions?
73, Stefan
Am 16.03.2018 16:41, schrieb Paul Nicholson:
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
--
vlfrx_stacking.jpg
Description: JPEG image
|