Re: [問題] DTMF 電話撥號

看板MATLAB作者 (mark31731123)時間12年前 (2012/06/13 16:41), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/4 (看更多)
※ 引述《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)
文章代碼(AID): #1Fs5939z (MATLAB)
文章代碼(AID): #1Fs5939z (MATLAB)