Help with DTMF and MATLAB FFT - Digit Recognition

  • Thread starter Thread starter noname1
  • Start date Start date
  • Tags Tags
    Matlab
Click For Summary

Discussion Overview

The discussion revolves around recognizing digits in a DTMF (Dual Tone Multi-Frequency) signal using MATLAB's FFT (Fast Fourier Transform) command. Participants are exploring methods to identify which digits are pressed based on the frequency components of the signal, addressing both theoretical understanding and practical implementation challenges.

Discussion Character

  • Technical explanation
  • Mathematical reasoning
  • Homework-related

Main Points Raised

  • One participant describes their attempt to use the FFT command in MATLAB to identify pressed digits in a DTMF signal, expressing uncertainty about interpreting the results.
  • Another participant explains that each DTMF key corresponds to two specific frequencies, providing an example for the '1' key.
  • A participant indicates confusion regarding the results, particularly in viewing higher and lower frequencies in the FFT output.
  • Concerns are raised about processing multiple keys simultaneously and the presence of unexpected spikes in the frequency range of 6500 Hz to 7000 Hz.
  • One participant suggests filtering out the frequency range of 6500 Hz to 7000 Hz to clarify the DTMF signals.
  • Another participant seeks clarification on how to process the signal in sections using the FFT, noting an error encountered when attempting to specify dimensions.
  • A later reply clarifies that the dimension argument for the FFT function should be a scalar value, not a vector, and suggests that the number of elements in the signal may need to be a power of 2.

Areas of Agreement / Disagreement

Participants express varying levels of understanding regarding the implementation of FFT in MATLAB and the interpretation of results. There is no consensus on how to resolve the issues with processing the signal or the unexpected frequency spikes.

Contextual Notes

Participants mention specific frequencies associated with DTMF tones and the challenges of analyzing multiple tones simultaneously. There are unresolved questions about the nature of the spikes in the frequency spectrum and the correct usage of MATLAB functions.

noname1
Messages
131
Reaction score
0
OP warned about not using homework template
i am trying to figure out digits in a dtmf signal using MATLAB with the fft command however i not sure how to figure out what digit is being pressed.

I am doing this

stem(abs(signal)) and get a plot with several digits pressed but not sure how to figure out which are pressed, any help would be appreciated
 
Physics news on Phys.org
noname1 said:
i am trying to figure out digits in a dtmf signal using MATLAB with the fft command however i not sure how to figure out what digit is being pressed.

I am doing this

stem(abs(signal)) and get a plot with several digits pressed but not sure how to figure out which are pressed, any help would be appreciated
DTMF stands for dual tone multifrequency. Each key on the keypad causes two frequencies to be generated. With your stem plot, you should be getting two vertical bars for each DTMF tone.

For example, the frequencies for the '1' key are 697Hz and 1209Hz. See the table in the Keypad section here - http://en.wikipedia.org/wiki/Dual-tone_multi-frequency_signaling.
 
thank you for your reply, i understand how dmtf works however the results i am getting are not making sense to me, for example i am getting this, not sure how to view the higher and lower frequencies
 

Attachments

  • example.jpg
    example.jpg
    20.8 KB · Views: 740
The difficulty is in working with several keys at the same time. Is there any way to look at the plot of one key at a time? Also, what's causing the spikes at around 6500 Hz and 7000 Hz? Those are DTMF signals.
 
not sure how to process that in matlab, i know how many samples and spacing per key how can i process just certain samples with fft?

i tried fft(singal,[],dim); where dimension is a vector [start:end] however i get an error

"Dimension argument must be a positive integer scalar within indexing range."

regarding the 6k and 7k spikes, not sure what they are because there is nothing in that rangethank you for your time in trying to explain it to me
 
i looked at that however i really don't understand how to do it by sections, in dimensions i tried using a vector with start:end but it always gives me the error above, could you explain how it works?
 
noname1 said:
i looked at that however i really don't understand how to do it by sections, in dimensions i tried using a vector with start:end but it always gives me the error above, could you explain how it works?
That dim argument needs to be a scalar value, not a vector. Your signal argument is a vector, right? You can call the fft function like this:
Code:
Result = fft(signal, N)
Here N is the number of elements in the signal vector. The documentation isn't as clear as it could be, and I don't have MATLAB to test things, but N might need to be a power of 2, like in the example on this doc page -- http://www.mathworks.com/help/matlab/ref/fft.html.
 

Similar threads

  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 8 ·
Replies
8
Views
3K
  • · Replies 10 ·
Replies
10
Views
2K
  • · Replies 8 ·
Replies
8
Views
3K
  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 1 ·
Replies
1
Views
12K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 13 ·
Replies
13
Views
2K