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)]);