www.gusucode.com > 基于matlab的dtmf信号传输过程及通信系统的软件仿真 > 基于matlab的dtmf信号传输过程及通信系统的软件仿真/code/sample_dtmf_system.m

    clear all;
d=input('输入一位电话号码=');
%symbol=abs(d);
tm=[1,2,3,65;4,5,6,66;7,8,9,67;42,0,35,68];
frequency_LL=[697 770 852 941];
frequency_HH=[1209 1336 1477 1633];
for p=1:4
    for q=1:4
        if tm(p,q)==abs(d);
            break;
        end
    end
    if tm(p,q)==abs(d);
        break;
    end
end
n=0:1023;
f_sample=8000;
coef1=2*pi*n*frequency_LL(p)/f_sample;
coef2=2*pi*n*frequency_HH(q)/f_sample;
x=sin(coef1)+sin(coef2);
sound(x);
disp('信号已发出');

N=205;
k=[18,20,22,25,31,34,38,42];
X=goertzel(x(1:N),k+1);
val=abs(X);
stem(k,val,'.');
grid;
xlabel('k');
ylabel('|X(k)|');
%set(gcf,'color','w');
%shg;
%axis([10 50\ 0 120]);
disp('图显完毕');

limit=80;
for s=5:8
    if val(s)>limit;
        break;
    end
end
for r=1:4
    if val(r)>limit,break,end
end
%disp(r);
%disp(s);
disp(tm(r,s-4));
%disp(['接收端检测到的号码为',tm(r,s-4)]);