Re: [問題] DTMF 電話撥號
※ 引述《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)
討論串 (同標題文章)