作者mark31731123 (mark31731123)
看板MATLAB
标题Re: [问题] DTMF 电话拨号
时间Wed Jun 13 16:41:37 2012
※ 引述《okgogogo (低调≧﹏≦)》之铭言:
: 程式要先读懂,改成这样,变通一下。
: PhoneNumber = input('请拨号!\n','s');
: for i=1:length(PhoneNumber)
: if PhoneNumber(i)=='*'
: PN=10;
: elseif PhoneNumber(i)=='0'
: PN=11;
: elseif PhoneNumber(i)=='#'
: PN=12;
: else
: PN=str2num(PhoneNumber(i));
: end
: p = audioplayer(tones(:,PN),Fs);
: play(p)
: pause(0.5)
: end
那请问又要如何对拨出的号码进行解码在找出他对应的号码呢?
请问有高手能为我解答吗?(以下为参考别人後修改的程式码,却失败了)
我发的第1篇N由800改为2000,R为0:N-1,
我也不太懂为何要满足<=50的条件
痾...以上刚刚去找教授都已经懂了,但是还是连接不上原本的程式码
应该是 fy=fft(tones);这句的问题,但是我不知道为何连接不上耶~~
希望有人能为我解答
fy=fft(tones);
aby=abs(fy);
ff=R*8000/2000;
[y,x]=max(aby(1:250));
ff1=x*8000/2000;
[y,x]=max(aby(250:500));
ff2=(x+250)*8000/2000;
fftotal=ff1+ff2;
num1=1906;
num2=2033;
num3=2174;
num4=1979;
num5=2106;
num6=2247;
num7=2061;
num8=2188;
num9=2329;
num0=2277;
if (4*abs((fftotal-num1))<=50)
fprintf('波形是频率697Hz&1209Hz>>> num1\n');
elseif (4*abs((fftotal-num2))<=50)
fprintf('波形是频率697Hz&1336Hz>>> num2\n');
elseif (4*abs((fftotal-num3))<=50)
fprintf('波形是频率697Hz&1447Hz>>> num3\n');
elseif (4*abs((fftotal-num4))<=50)
fprintf('波形是频率770Hz&1209Hz>>> num4\n');
elseif (4*abs((fftotal-num5))<=50)
fprintf('波形是频率770Hz&1336Hz>>> num5\n');
elseif (4*abs((fftotal-num6))<=50)
fprintf('波形是频率770Hz&1447Hz>>> num6\n');
elseif (4*abs((fftotal-num7))<=50)
fprintf('波形是频率852Hz&1209Hz>>> num7\n');
elseif (4*abs((fftotal-num8))<=50)
fprintf('波形是频率852Hz&1336Hz>>> num8\n');
elseif (4*abs((fftotal-num9))<=50)
fprintf('波形是频率852Hz&1441Hz>>> num9\n');
elseif (4*abs((fftotal-num0))<=50)
fprintf('波形是频率941Hz&1336Hz>>> num0\n');
end
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 120.107.174.109
※ 编辑: mark31731123 来自: 120.107.174.109 (06/13 18:16)
※ 编辑: mark31731123 来自: 120.107.174.109 (06/13 18:37)
※ 编辑: mark31731123 来自: 120.107.174.109 (06/13 21:04)