tm=[1,2,3,10;4,5,6,11;7,8,9,13;15,0,16,14]; % DT % 行频率向量
f2=[1209,1336,1477,1633]; %MF信号代表的16个数
f1=[697,770,852,941]; %列频率向量
fs=8000;
Tel=input('键入11位电话号码= '); % 输入11位数字
for m=1:11
d=fix(Tel/10^(11-m));
Tel=Tel-d*10^(11-m);
for p=1:4
for q=1:4
if tm(p,q)==abs(d); break,end % 检测码相符的列号q
end
if tm(p,q)==abs(d);break,end % 检测码相符的行号p
end
n=0:1023; % 为了发声,加长序列
xm= sin(2*pi*n*f1(p)/fs) + sin(2*pi*n*f2(q)/fs);% 构成双频信号
sound(xm,8000); % 发出声音
if m==1
filename = ('dtmf1.wav'); %给文件取名
audiowrite(filename,xm,8000) %存储.wav音频文件,在这里文件名为dtmf1.wav
end
if m==2
filename = ('dtmf2.wav'); %给文件取名
audiowrite(filename,xm,8000) %存储.wav音频文件,在这里文件名为dtmf2.wav
end
if m==3
filename = ('dtmf3.wav'); %给文件取名
audiowrite(filename,xm,8000) %存储.wav音频文件,在这里文件名为dtmf3.wav
end
if m==4
filename = ('dtmf4.wav'); %给文件取名
audiowrite(filename,xm,8000) %存储.wav音频文件,在这里文件名为dtmf4.wav
end
if m==5
filename = ('dtmf5.wav'); %给文件取名
audiowrite(filename,xm,8000) %存储.wav音频文件,在这里文件名为dtmf5.wav
end
if m==6
filename = ('dtmf6.wav'); %给文件取名
audiowrite(filename,xm,8000) %存储.wav音频文件,在这里文件名为dtmf6.wav
end
if m==7
filename = ('dtmf7.wav'); %给文件取名
audiowrite(filename,xm,8000) %存储.wav音频文件,在这里文件名为dtmf7.wav
end
if m==8
filename = ('dtmf8.wav'); %给文件取名
audiowrite(filename,xm,8000) %存储.wav音频文件,在这里文件名为dtmf8.wav
end
if m==9
filename = ('dtmf9.wav'); %给文件取名
audiowrite(filename,xm,8000) %存储.wav音频文件,在这里文件名为dtmf9.wav
end
if m==10
filename = ('dtmf10.wav'); %给文件取名
audiowrite(filename,xm,8000) %存储.wav音频文件,在这里文件名为dtmf10.wav
end
if m==11
filename = ('dtmf11.wav'); %给文件取名
audiowrite(filename,xm,8000) %存储.wav音频文件,在这里文件名为dtmf11.wav
end
subplot(6,2,m);
plot(n,xm);
pause(0.5)
end