[SciPy-User] finding frequency of wav

Fabrice Silva silva at lma.cnrs-mrs.fr
Thu May 27 11:42:45 EDT 2010


Le jeudi 27 mai 2010 à 16:42 +0200, Linda a écrit :

> The signal I am trying to decode is a DSC transmission that is
> recorded in a wav file. (Digital Selective Calling, used in marine
> radio) It is a phase modulated digital signal: '1' is 2100Hz, '0' is
> 1300 Hz and there's a carrier at 1700Hz. That should be all
> frequencies involved (apart from noise). Currently I am used
> generated, clean signals. But probably I should get a clean
> '10101010'-signal first to try my work on.
> Since the bitrate is set at 1200bits/sec, the bit length would be
> samplerate/1200 = 18.4 samples at 22050. I can double the samplerate
> to 44100, but that still leaves me at only 36.8 samples per chunk.

Then a chuck is what you can consider a stationary signal with a single
frequency. Due to the bitrate and the sampling frequency, it has only 18
samples, so that, its Fourier transform is a lobe centered
on 2100 or 1300Hz whose relative bandwidth is the inverse of the number
of periods that whould have been observed (neglecting noise).
Result : width = frequency/#periods = 1300/{almost 1} Hz
i.e. the very limited number of samples in each sample lead to, in
frequency domain, a lobe whose width is almost the same as the central
frequency! because the bitrate and carrier are close...

> If I understand what you say correctly, I would need at least 55 (64)
samples in each chunk?
In my previous answer, I only consider a very raw Rayleigth criteria:
two coding frequencies would at least be spaced by two computed fft
frequencies. Zero padding can easily deal with this problem. But the
width of the lobes (linked with the limited number of periods observed)
may be a lot more tricky to solve. But you can still use estimation
methods based for example on the spectrum centroïd to determine whether
the bit is now on 0 or 1.
> 
> 
> I'm not sure what chunk[3] would have been, I should have used a
> dotting-signal instead of an unknown message to try this on. I will
> try this again with more useful data this afternoon.







More information about the SciPy-User mailing list