Plotting more than one DTMF frequencies on a graph

Hello,
I can plot single dtmf frequency. I would like to plot more than one frequency on a single graph. How do I do it?
Exampl below:
t = 0:1/32798:0.25-1/32798; x = sin(2*pi*xxx*t) + sin(2*pi*yyy*t);
x2 = sin(2*pi*aaa*t2) + sin(2*pi*bbb*t2);
if I do
plot(t, x); title('DTMF Signal for t = 0.25s'); xlabel('time (s)'); ylabel('Amplitude');
it will plot x for me.
Now I would like to plot x and x2 on the same graph. I am aware of putting frequency of zero in between.
Thank you.

2 Comments

It's not clear to me, what exactly you are asking. Are you asking how to put more than one line in a plot? If so, either
plot(t,x,'b',t2,x2,'k');
or
plot(t,x);
hold on
plot(t2,x2);
hold off
but please read the documentation
doc plot
I may not be clear enough.
I have two signal gotten from a keypad (number 2 and 7);
t = 0:1/32798:0.25-1/32798;
x2 = sin(2*pi*1336*t) + sin(2*pi*697*t);
x7 = sin(2*pi*1209*t) + sin(2*pi*852*t);
I want to plot these two signals in one graph. I am finding it difficult to do it. I want the graph to look like the last one on page 2 of this www.engr.mun.ca/~sircar/project1_files/dtmf.pdf
I am aware that I have to add a silence period between.
Thank you.

Sign in to comment.

 Accepted Answer

Okay, now that your question is clearer to me, I think this is what you want:
t = 0:1/32798:0.25-1/32798;
x2 = sin(2*pi*1336*t) + sin(2*pi*697*t);
x7 = sin(2*pi*1209*t) + sin(2*pi*852*t);
int_of_silence = .1; shift = t(end)+ int_of_silence;
plot(t, x2, 'b', t+shift, x7, 'b', [t(end) t(end)+int_of_silence], [0 0], 'b', t+2*shift, x2, 'b', 2*[t(end) t(end)+int_of_silence], [0 0], 'b')
You see the trick is shifting the time axis for each segment by the right amount, I called it shift. The [t(end) t(end)+int_of_silence], [0 0], 'b' part is only to draw a line at 0 between segments.

3 Comments

Thank you very much.
I had to combine your first and second answer to get what I want.
Although, from the question I asked, the second answer is very correct.
I was actually trying to plot any amount of dtmf frequencies gotten from inputdlg.
After doing everthing like getting each number entered with a for loop, I could not plot them.
What I did is to use hold on and my t after the first digit becomes t = t + j*shift; where j = position of the digit - 1.
Then I did:
figure(1)
hold on
plot(t, x, 'b');
NB the value of x changes for each iteration of the for loop.
I am almost tempted to ask how to play the sound produced, but let me first do my own search/research.
Thank you.
Hi, Thank you very much (both of you),
I really found this question very important and related to my problem, so please Jonathan or Kyarn, how can you play the sound of the signal above, then? Tanx
now if we have to plot all the12 tones on a same graph.We can use subplot but graphs cant still be hold.so how can v get all graphs plotted on same fig??

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!