MATLAB DTMF Decoding code
hi,
This is my DTMF decoding code for 7 number random dtmf signal.
What is Dtmf?
Dual-tone multi-frequency (DTMF) signaling is used for <a href="https://en.wikipedia.org/wiki/Signalling_(telecommunications)" target="_blank" rel="nofollow noopener noreferrer">Signalling (Telecommunications)</a> over analog telephone lines in the voice-frequency band between <a href="https://en.wikipedia.org/wiki/Telephone" target="_blank" rel="nofollow noopener noreferrer">Telephone</a> handsets and other communications devices and the <a href="https://en.wikipedia.org/wiki/Automatic_telephone_exchange" target="_blank" rel="nofollow noopener noreferrer">Automatic Telephone Exchange</a>. The version of DTMF used for telephone tone dialing is known by the trademarked term Touch-Tone (canceled March 13, 1984), and is standardized by <a href="https://en.wikipedia.org/wiki/ITU-T" target="_blank" rel="nofollow noopener noreferrer">Itu T</a> Recommendation #-Link-Snipped-#. It is also known in the UK as MF4. Other <a href="https://en.wikipedia.org/wiki/Multi-frequency" target="_blank" rel="nofollow noopener noreferrer">Multi Frequency</a> systems are used for signaling internal to the telephone network.
(source:Wiki)
Code:
This code is kuul because it can detect numbers from every 7 number dtmf signal.Tone and silence times are not important.
Totally my work.
enjoy it 😀
(Ps:If you want to test the code, you can download test tones directly from #-Link-Snipped-# then just write
😁
This is my DTMF decoding code for 7 number random dtmf signal.
What is Dtmf?
Dual-tone multi-frequency (DTMF) signaling is used for <a href="https://en.wikipedia.org/wiki/Signalling_(telecommunications)" target="_blank" rel="nofollow noopener noreferrer">Signalling (Telecommunications)</a> over analog telephone lines in the voice-frequency band between <a href="https://en.wikipedia.org/wiki/Telephone" target="_blank" rel="nofollow noopener noreferrer">Telephone</a> handsets and other communications devices and the <a href="https://en.wikipedia.org/wiki/Automatic_telephone_exchange" target="_blank" rel="nofollow noopener noreferrer">Automatic Telephone Exchange</a>. The version of DTMF used for telephone tone dialing is known by the trademarked term Touch-Tone (canceled March 13, 1984), and is standardized by <a href="https://en.wikipedia.org/wiki/ITU-T" target="_blank" rel="nofollow noopener noreferrer">Itu T</a> Recommendation #-Link-Snipped-#. It is also known in the UK as MF4. Other <a href="https://en.wikipedia.org/wiki/Multi-frequency" target="_blank" rel="nofollow noopener noreferrer">Multi Frequency</a> systems are used for signaling internal to the telephone network.
(source:Wiki)
Code:
function [testout] = ttdecode2(x)
d = [0.7217 1.0247; 0.5346 0.9273; 0.5346 1.0247;0.5346 1.1328; 0.5906 0.9273;0.5906 1.0247; 0.5906 1.1328; 0.6535 0.9273;0.6535 1.0247; 0.6535 1.1328];
aras = find(x==0);
n = 1;
for i = 1:size(aras,2)-2
if(aras(i+1)-aras(i) > 100)
if(aras(i+2)-aras(i+1) > 100)
abas(n,1)=aras(i);
abas(n,2)=aras(i+2);
n = n + 1;
aras(i+1)=aras(i+2);
i = i -1;
end
if(aras(i+2)-aras(i+1) < 100)
abas(n,1)=aras(i);
abas(n,2)=aras(i+1);
n = n +1;
end
end
end
x11 = x(abas(1,1):abas(1,2));
x12 = x(abas(2,1):abas(2,2));
x13 = x(abas(3,1):abas(3,2));
x14 = x(abas(4,1):abas(4,2));
x15 = x(abas(5,1):abas(5,2));
x16 = x(abas(6,1):abas(6,2));
x17 = x(aras(size(aras,2)):size(x,2));
bak1 = (abs(fft(x11,2048))).^2;
bak2 = (abs(fft(x12,2048))).^2;
bak3 = (abs(fft(x13,2048))).^2;
bak4 = (abs(fft(x14,2048))).^2;
bak5 = (abs(fft(x15,2048))).^2;
bak6 = (abs(fft(x16,2048))).^2;
bak7 = (abs(fft(x17,2048))).^2;
bak1(1000:2048)=0;
bak2(1000:2048)=0;
bak3(1000:2048)=0;
bak4(1000:2048)=0;
bak5(1000:2048)=0;
bak6(1000:2048)=0;
bak7(1000:2048)=0;
k = 0:2047;
omega = (2*pi*k)/2048;
frek(1,1)=omega(find(bak1==max(bak1)));
bak1(find(bak1==max(bak1)))=0;
frek(1,2)=omega(find(bak1==max(bak1)));
if(frek(1,1)>frek(1,2))
c = frek(1,2);
frek(1,2)=frek(1,1);
frek(1,1) = c;
end
frek(2,1)=omega(find(bak2==max(bak2)));
bak2(find(bak2==max(bak2)))=0;
frek(2,2)=omega(find(bak2==max(bak2)));
if(frek(2,1)>frek(2,2))
c = frek(2,2);
frek(2,2)=frek(2,1);
frek(2,1) = c;
end
this code takes the signal you give and after decode it, output the numbers.This code is kuul because it can detect numbers from every 7 number dtmf signal.Tone and silence times are not important.
Totally my work.
enjoy it 😀
(Ps:If you want to test the code, you can download test tones directly from #-Link-Snipped-# then just write
load touchthats all, tones are ready to use at your enviroment)
😁
0