Analysis number from dtmf sound
6 views (last 30 days)
Show older comments
hello, i have a wav file, which use dtmf i do spectrogram on the file and i receive 10 amplitude peak how can i return the 2 frequency of each peak (high and low frequency)
2 Comments
Accepted Answer
Star Strider
on 17 Sep 2014
You did not post your data so I cannot be specific. You can get the frequency and time output as vectors from spectrogram:
- [S,F,T] = spectrogram(...) returns a vector of frequencies, F , and a vector of times, T , at which the spectrogram is computed. F has length equal to the number of rows of S . T has length k (defined above) and the values in T correspond to the center of each segment.
There is probably no neat and efficient way to do what you want. I would loop through S at each time, sort and threshold the amplitudes to find the indices of the values >-35dB or so, then use the indices returned by sort to determine the frequencies. (Using the find function is also a possibility, but I am not certain it would make this more efficient.)
9 Comments
Star Strider
on 6 Oct 2014
To the best of my knowledge, there are no filters at all involved in spectrogram. It uses a fft with windowing.
More Answers (1)
See Also
Categories
Find more on DTMF in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!