




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、燕山大學課程設計說明書-燕山大學課 程 設 計 說 明 書題目:dtmf電話中的撥號信號發生與檢測系統仿真設計學院(系): 電氣工程學院 年級專業: 09級儀表(2)班 學 號: 090103020074 學生姓名: 吳季哲 指導教師: 謝平 吳曉光 教師職稱: 教授 講師 32 第 頁 共32頁燕山大學課程設計(論文)任務書院(系):電氣工程學院 基層教學單位:自動化儀表系學 號090103020074學生姓名吳季哲專業(班級)09級儀表2班設計題目dtmf電話中的撥號信號發生與檢測系統仿真設計設計技術參數采樣頻率是8000hz;每125ms輸出一個樣本;所用頻率:697hz、770hz、8
2、52hz、942hz、1209hz、1336hz、1477hz、633hz設計要求1、設計一個電話撥號模擬系統2、設計一個檢測系統3、繪制接收到信號的頻譜圖4、撰寫設計報告工作計劃周一,設計一個電話撥號模擬系統;周二,設計一個檢測系統;周三、四,繪制接收到信號的頻譜圖;周五,撰寫設計報告。參考資料數字信號處理(第三版) 高西全,丁玉美編著數字信號處理教程 第三版 程佩青 編著數字信號處理原理及應用 謝平 王娜 林洪彬 編著指導教師簽字謝平 吳曉光基層教學單位主任簽字謝平說明:此表一式四份,學生、指導教師、基層教學單位、系部各一份。2012年6 月20 日 燕山大學課程設計評審意見表指導教師評語
3、:成績: 指導教師: 年 月 日答辯小組評語:成績: 組長: 年 月 日課程設計總成績:答辯小組成員簽字:年 月 日摘 要雙音多頻(dual tone multi frequency, dtmf)信號是音頻電話中的撥號信號,由美國at&t貝爾公司實驗室研制,并用于電話網絡中。這種信號制式具有很高的撥號速度,且容易自動檢測識別,很快就代替了原有的用脈沖計數方式的撥號制式。這種雙音多頻信號制式不僅用在電話網絡中,還可以用于傳輸十進制數據的其他通信系統中,用于電子郵件和銀行系統中。這些系統中用戶可以用電話發送dtmf信號選擇語音菜單進行操作。 dtmf信號系統是一個典型的小型信號處理系統,它要用數字
4、方法產生模擬信號并進行傳輸,其中還用到了d/a變換器;在接收端用a/d變換器將其轉換成數字信號,并進行數字信號處理。本文主要介紹用matlab在計算機上對雙音多頻的信令產生及檢測接收系統進行了仿真測試。關鍵詞:雙音多頻,數字信號處理,傅里葉變換;目 錄摘要21.緒論41.1 引言41.2 數字信號簡介41.3 數字濾波器61.4 頻率分析7 1.4.1 傅里葉級數及傅里葉變換 7 1.4.2 z變換及系統函數 8 1.4.3 離散系統傅里葉變換(dft)92.雙音多頻(dtmf)通信系統6 2.1 雙音多頻(dtmf)信號簡介10 2.2 雙音多頻(dtmf)信號的產生10 2.3 雙音多頻(
5、dtmf)信號的檢測115.雙音多頻(dtmf)系統的matlab實現 165.1 matlab簡介 165.2 gui界面介紹175.3 雙音多頻(dtmf)系統的仿真19第4章 學習心得20參考文獻 21程序清單 221 緒論1.1 引言雙音多頻(dual tone multi frequency,dtmf)信號,由美國at&t貝爾實驗室研制,用于音頻電話網絡中的撥號信號。一方面這種信號具有非常高的撥號速度,另一方面它便于自動檢測識別及電話業務的拓展,所以很快代替了原有的脈沖計數方式的撥號形式。自1876年美國貝爾發明電話以來,電話交換技術發展主要經歷了三個階段:人工交換、機電交換、電子交
6、換。早在1878年就出現了人工供電制交換機,它借助話務員進行話務連接。15年后步進制的交換機問世,這種交換機屬于“直接控制”方式,用戶通過話機撥號脈沖直接控制步進接續器做升降和旋轉動作。從而自動完成用戶間的接續。這種交換機雖然實現了自動接續,但存在著速度慢、效率低、雜音大與機械磨損嚴重等缺點。直到1938年發明了縱橫制交換機由直接控制過渡到間接控制方式,隨后又出現了電子交換機及程控交換機等。用戶的撥號脈沖不再直接控制接線器動作,而先由記發器接收、存儲,然后通過標志器驅動接線器,以完成用戶間接續。由于標志器記取的是標識信號,所以可以不采用不穩定的脈沖計數方式,逐步發展到數字號碼標識,所以快速、穩
7、定靈活的dtmf音頻撥號方式取代了脈沖計數方式。本文主要闡述goertzel算法在雙音撥號系統中的應用,并利用matlab的強大功能,用軟件實現dtmf(雙音多頻)信號的檢測。1.2 數字信號簡介信號是反映消息的物理量,是消息的表現形式。由于非電的物理量可以通過各種傳感器較容易地轉換成電信號,而電信號又容易傳送和控制,所以使其成為應用最廣的信號。電信號是指隨著時間而變化的電壓或電流,因此在數學描述上可將它表示為時間的函數,并可畫出其波形。信息可以通過電信號進行傳送、交換、存儲、提取等。電信號的形式是多種多樣的,可以從不同的角度進行分類。根據信號的機性可以分為確定信號和隨機信號;根據信號的周期性
8、可分為周期信號和非周期信號;根據信號的連續性可以分為連續時間信號和離散信號;在電子線路中將信號分為模擬信號和數字信號。我們每天遇到的信號,大部分都是模擬信號。離散時間信號只被定義在一種特定的時間瞬間集合上,表現為具有連續數值范圍的數值序列。而數字信號在時間上和幅值上都有離散的數字。因此在實際的操作中,數字信號更容易處理。隨著數字電子技術的發展,在語音處理、通信控制、圖象處理等領域dsp(digital signal processor 數字信號處理器 )也得到了越來越廣泛的應用。數字通信抗干擾能力強、無噪聲積累,由于數字信號的幅值為有限個離散值(通常取兩個幅值),在傳輸過程中雖然也受到噪聲的干
9、擾,但當信噪比惡化到一定程度時,即在適當的距離采用判決再生的方法,再生成沒有噪聲干擾的和原發送端一樣的數字信號,所以可實現長距離高質量的傳輸。較之傳統的方法,數字信號處理系統自身有著無可比擬的優點:(1)便于加密處理信息傳輸的安全性和保密性越來越重要,數字通信的加密處理的比模擬通信容易得多,以話音信號為例,經過數字變換后的信號可用簡單的數字邏輯運算進行加密、解密處理。(2)便于存儲、處理和交換數字通信的信號形式和計算機所用信號一致,都是二進制代碼,因此便于與計算機聯網,也便于用計算機對數字信號進行存儲、處理和交換,可使通信網的管理、維護實現自動化、智能化。(3)設備便于集成化、微型數字通信采用
10、時分多路復用,不需要體積較大的濾波器。設備中大部分電路是數字電路,可用大規模和超大規模集成電路實現,因此體積小、功耗低。(4)便于構成綜合數字網和綜合業務數字網采用數字傳輸方式,可以通過程控數字交換設備進行數字交換,以實現傳輸和交換的綜合。另外,電話業務和各種非話業務都可以實現數字化,構成綜合業務數字網。(5)占用信道頻帶較寬一路模擬電話的頻帶為4khz帶寬,一路數字電話約占64khz,這是模擬通信目前仍有生命力的主要原因。隨著寬頻帶信道(光纜、數字微波)的大量利用以及數字信號處理技術的發展,數字電話的帶寬問題已不是主要問題了。1.3 數字濾波器數字濾波器由數字加法器、單位延時和常數乘法器組成
11、的一種算法或裝置。數字濾波器的功能是對輸入離散信號的數字代碼進行運算處理,即把輸入序列通過一定的運算變換成輸出序列,以達到改變信號頻譜的目的。數學公示表示如下: (1.3-1)通常可以用兩種方法實現數字濾波器:一種方法是把濾波器所完成的運算編成程序并讓計算機執行,也就是采用就算機軟件實現;另一種方法是設計專用的數字硬件、專用的數字信號處理器或采用通用的數字信號處理器來實現。存在著兩種數字濾波器的的基本類型:無限長單位沖擊響應(iir)濾波器和有限長單位沖擊響應(fir)濾波器。它們的系統函數分別為: (1.3-2) (1.3-3)式(1.3-2)中的h(z)稱為n階iir濾波器函數式,(1.3
12、-3)中的h(z)稱為n-1階fir濾波器函數。無限長單位沖激響應(iir)濾波器的單位沖激響應h(n)是無限長的;系統函數h(z)在有限z平面(0z)上有極點存在;結構上存在著輸出到輸入的反饋,也就是結構上是遞歸型的。1.4 頻率分析 任何給定信號的頻率分析,都包含著時域信號向其頻率分量的轉換。之所以要在頻域內對信號進行描述,因為在實現信號處理時,通常都利用以頻率響應形式描述的系統。而這些頻域信號處理概念時傅立葉變換是必不可少的。同時z變換對進行數字系統分析和實現也極其重要。1.4.1 傅立葉級數及傅立葉變換任何周期信號x(t)均可以表示為無窮多個諧波調諧相關的正弦波和復指數之和。具有周期t
13、0(秒)周期信號x(t),其基本的數學表達式為具有系列定義的傅立葉級數: (1.4.1-1)式中ck為傅立葉級系數,第k個傅立葉系數ck可以表示為 (1.4.1-2)用周期信號的傅立葉級數通過極限的方法導出的非周期信號的頻譜表示式,稱為傅立葉變換:傅立葉逆變換: (1.4.1-3)傅立葉正變換: = (1.4.1-4)1.4.2 z變換及系統函數對于離散時間系統來說,與拉普拉斯對應的變換是是z變換,z變換提供了離散時間信號和系統的頻域描述,并為數字濾波器的設計和實現,提供了有力的工具。序列x(n)的z變換定義為 : (1.4.2-1)式中z是一個復變量,定義中對n求和是在和之間求和,稱為邊z變
14、換。還有一種稱為單邊z變換的定義,如下式: (1.4.2-2)將系統的單位脈沖響應h(n)進行z變換,得到h(z),一般稱h(z)為系統的系統函數,它表征了系統的頻域特性。對n階差分方程進行z變換,得到系統函數的一般表示式 (1.4.2-3)令z=ej即得系統的傳輸函數h(ej)。1.4.3 離散系統傅立葉變換(dft)離散傅立葉變換是針對有限長序列或周期序列從存在的,相當把序列的連續傅立葉變換加以抽樣,頻率的離散化造成時間函數也呈周期,故級數應限制在一個周期內。令,則,我們即可得到離散傅立葉變換對為: (1.4.31) (1.4.32)其中表示有限長序列的抽樣點數,或周期序列一個周期的抽樣點
15、數。2 雙音多頻(dtmf)通信系統2.1 雙音多頻(dtmf)信號過去的電話撥號時靠脈沖計數確定09這10個數字的,撥號速度慢,也不能擴展電話上網其他服務功能。現在均采用雙音撥號。每一位號碼由兩個不同的單音頻組成,所有的頻率可分成高頻帶和低頻帶兩組。每一位號碼由一個高頻信號和一個低頻信號疊加形成,dtmf信號有16個編碼。一般情況下,聲音信號很難造成對dtmf接收器的錯誤觸發。電話中的雙音多頻信號有兩個作用:用撥號信號去控制交換機接通被叫的用戶電話機;控制電話機的各種動作,如播放留言、語音信箱等。2.2 雙音多頻(dtmf)信號的產生dtmf編碼器基于兩個二階數字正弦波振蕩器,一個用于產生行
16、頻,一個用于產生列頻。典型的dtmf信號頻率范圍是7001700hz,選取8000hz作為采樣頻率,dtmf雙音頻信號由兩個二階數字正弦振蕩器產生,一個用來產生行音頻信號,另一個產生列音頻信號。在電話鍵盤上的每次按鍵,會產生式(2.2-1)表示的兩個音調之和。規定用8khz對dtmf信號進行采樣,采樣后得到時域離散信號為 (2.2-1)兩個頻率f1,f2唯一確定了被按壓的鍵。具體數字對應的兩個頻率如表2.2.1所示。表2-1 dtmf撥號頻率(第四列常被省略)頻低頻高1209hz1336hz1477hz633hz697hz123a770hz456b852hz789c942hz*0#d形成上面序
17、列的方法有兩種,即計算法和查表法。用計算法求正弦波的序列值容易,但實際中要占用一些計算時間,影響運行速度。查表法是預先將正弦波的各序列值計算出來,寄存在存儲器中,運行時只要按順序和一定的速度取出便可。這種方法要占用一定的存儲空間,但是速度快。因為采樣頻率是8000hz,因此要求每125ms輸出一個樣本,得到的序列再送到d/a變換器和平滑濾波器,輸出便是連續時間的dtmf信號。dtmf信號通過電話線路送到交換機。2.3雙音多頻(dtmf)信號的檢測在接收端,要對收到的將收到的雙音多頻信號進行檢測,即檢測兩個正弦波的頻率,以判斷其對應的十進制數字或者符號。用數字方法進行檢測,需要將接收到的模擬音頻
18、信號進行a/d變換,恢復為數字信號,然后檢測其中的音頻頻譜來確定所發送的數字。檢測方法有兩種,一種是用一組濾波器來提取所需頻率,判斷對應的數字或符號;另一種是用快速傅立葉變換(fft)算法的dft對雙音多頻信號進行頻譜分析,有信號的幅度譜,判斷信號的兩個頻率,最后確定對應的數字或符號。還有一種goertzel算法更合適,但本文沒有做詳細介紹,有興趣的可以查閱資料。由上面可以知道一個dtmf信號是由兩個不通頻率f1和f2的正弦波組成,它可以用下式表示 (2.3-1)我們可以考慮通過離散傅立葉變換進行信號的頻譜分析來檢測離散的雙音多頻碼。這是因為只有時域及頻域都是離散的情況下,才能適合于在計算機上
19、運算;也就是周期的離散時間信號與離散頻率間的變換對。周期性離散時間信號x(n)的離散傅立葉變換周期性離散頻率函數x(k)兩相鄰譜線分量之間的角頻率增量與周期之間的關系可表示為, 代表信號的基頻。取樣頻率與取樣周期t的關系是 取樣角頻率 t為時域取樣間隔,在一個周期內取樣點數為n。在自變量為t及f的情況下,在一個時域中對函數進行取樣,兩取樣點間增量的倒數,必是另一個域中函數的周期。現序列的周期為nt,所以對頻譜取樣的間距是。以數字頻率表示時,則頻譜間距是 k0,1,n1令并稱之為因子。離散傅立葉變換(dft)可寫成如下形式:, 0 kn1 (2.3-2)dft的表達式可以直接寫成:, k0,1,
20、n1 ( 2.3-3) 一般來說,x(n)和都是復數,x(k)也是復數,每計算一個x(k)值,需要n次復數乘法(x(n)與相乘)以及(n1)次復數加法。而x(k)一共有n個點(k從0取到n1),所以完成整個dft運算總共需要次復數乘法及n(n1)次復數加法。復數運算實際上是由實數運算來完成的,因此上式可寫成: (2.3-4)由此可見,一次復數乘法需用四次實數乘法和兩次實數加法;一次復數加法則需兩次復數加法。因而每運算一個需要4n次復數乘法和2n2(n-1)=2(2n-1)次實數加法。 所以,直接計算dft,乘法次數和加法次數都是和成正比的,當n很大時,運算量是很可觀的,例如,當n8時,dft需
21、64次復數乘法,而當n1024時,dft所需復數乘法為1,048,576次,即一百多萬次復數乘法運算,這對實時性很強的信號處理來說,對計算速度的要求太高了。因而需要改進對dft的計算方法,以大大減少運算次數。仔細觀察dft的運算量可以看出,利用系數的以下固有特性,可以減少dft的運算量。(1)的共軛對稱性: (2)的周期性: (3) 的可約性:由此得出,這樣,(1)利用這些特性,使dft運算中有些項可以合并;(2)利用的周期性和對稱性,可以將長序列的dft分解為短序列的dft。而前面已經說到,dft的運算量使與成正比的,所以n越小越有利,因而小點數的dft比大點數的dft的運算量要小。基于這樣
22、的思路,快速傅立葉變換(fft)發展起來了。如果按時間抽取的fft算法,系統的運算量是,運算量明顯比dft運算量減少。但它有一個缺點,需要全部抽樣數據到達時,才能進行計算;不太適合雙音多頻信號頻譜的計算,滿足不了雙音撥號系統實時性的要求。有一種dmft的特殊算法goertzel算法,更適合適合雙音多頻信號頻譜的計算。這篇文章介紹的是用快速傅里葉算法實現的。5 雙音多頻(dtmf)系統的matlab實現5.1 matlab簡介matlab是由美國mathworks公司發布的主要面對科學計算、可視化以及交互式程序設計的高科技計算環境。它將數值分析、矩陣計算、科學數據可視化以及非線性動態系統的建模和
23、仿真等諸多強大功能集成在一個易于使用的視窗環境中,為科學研究、工程設計以及必須進行有效數值計算的眾多科學領域提供了一種全面的解決方案,并在很大程度上擺脫了傳統非交互式程序設計語言(如c、fortran)的編輯模式,代表了當今國際科學計算軟件的先進水平。matlab 產品族可以用來進行以下各種工作: 數值分析 數值和符號計算 工程與科學繪圖 控制系統的設計與仿真數字圖像處理技術數字信號處理技術 通訊系統設計與仿真 財務與金融工程matlab 的應用范圍非常廣,包括信號和圖像處理、通訊、控制系統設計、測試和測量、財務建模和分析以及計算生物學等眾多應用領域。附加的工具箱(單獨提供的專用 matlab
24、 函數集)擴展了 matlab 環境,以解決這些應用領域內特定類型的問題。它有如下的特點:(1)功能強的數值運算 在matlab環境中,有超過500種數學、統計、科學及工程方面的函數可使用,函數的標示自然,使得問 題和解答像數學式子一般簡單明了,讓使用者可全力發揮在解題方面,而非浪費在電腦操作上。(2)先進的資料視覺化功能 matlab的物件導向圖形架構讓使用者可執行視覺數據分,并制作高品質的圖形,完成科學性或工程 性圖文并茂的文章。(3)高階但簡單的程式環境 作為一種直譯式的程式語言,matlab容許使用者在短時間內寫完程式,所花的時間約為用 fortran 或 c 的幾分之一,而且不需要編
25、譯(compile)及聯結 (link) 即能執行,同時包含了更多及更容易使用的內建功能。(4)開放及可延伸的架構 matlab容許使用者接觸它大多數的數學原始碼,檢視運算法,更改現存函數,甚至加入自己的函數使 matlab成為使用者所須要的環境。(5)豐富的程式工具箱 matlab的程式工具箱融合了套裝前軟體的優點,與一個靈活的開放但容易操作之環境,這些工具箱提 供了使用者在特別應用領域所需之許多函數。現有工具箱有:符號運算(利用maple v的計算核心執行 )、影像處理、統計分析、訊號處理、神經網路、模擬分析、控制系統、即時控制、系統確認、強建控 制、弧線分析、最佳化、模糊邏輯、mu分析及
26、合成、化學計量分析。因為有了這些工具箱,大量繁雜的數學運算和分析可通過調用matlab函數直接求解,大大提高了編程效率,其程序編譯和執行速度遠遠超過了basic、fortran和c等語言。5.2 gui界面介紹 gui的廣泛應用是當今計算機發展的重大成就之一,他極大地方便了非專業用戶的使用。人們從此不再需要死記硬背大量的命令,取而代之的是可以通過窗口、菜單、按鍵等方式來方便地進行操作。而嵌入式gui具有下面幾個方面的基本要求:輕型、占用資源少、高性能、高可靠性、便于移植、可配置等特點。 matlab中擁有gui界面的功能,可以將想要實現的效果通過gui界面展現出來,在matlab主界面,通過路
27、徑file-new-gui打開gui界面的編輯窗口,將需要的按鈕拖出,雙擊可進行編輯。右擊找到callback,在該函數下編寫該按鈕要實現的功能,可實現該按鈕的功能。5.3 雙音多頻(dtmf)系統的仿真dtmf信號的產生與識別仿真實驗在matlab環境下進行,編寫仿真程序,運行程序,送入電話號碼,程序自動產生每一位號碼數字相應的dtmf信號,產生頻率普圖,并送出雙頻聲音,再用dft進行譜分析,在gui界面上顯示每一位號碼數字的dtmf信號的dft幅度譜。(如下圖)6 學習心得本文采用快速傅里葉(fft)算法,實現了對雙音多頻信號的檢測,在matlab環境下,對雙音多頻信號的解碼檢測過程進行了
28、模擬仿真。本文只是完成了雙音多頻撥號系統的軟件仿真,如何實現高性價比的硬件系統是下一步需要研究和完成的工作。在做matlab界面,做好以后同時會產一個m文件,只要把代碼編寫在對應的控件中即可以方便的實現仿真。試驗結果表明基于matlab 的dtmf 編解碼具有速度快、精度高、穩定性好以及便于靈活應用等特點。而利用matlab語言,可以較好地、快速地進行算法的仿真。本文是在老師的悉心指導下完成的。每當有什么不解之處,老師總是給予詳細的解答,而老師對于我們未來的生活更是給予了耐心的指導,并提出了寶貴的建議,使我終身受教。在整個設計過程中,我學習到了許多東西,同時也鍛煉了獨立思考和設計能力,使自己明
29、白了學習是一個長期積累的過程,在以后的工作和生活中都應該不斷學習,提高自身的知識水平和綜合素質。相信此次課程設計讓我所體會到的人生哲理,必將成為今后生活和學習中的巨大財富,使我終生受益。在此深切的感謝這些幫助,鼓勵和關心過我的老師們!參考文獻數字信號處理(第三版) 高西全,丁玉美編著數字信號處理教程 第三版 程佩青 編著數字信號處理原理及應用 謝平 王娜 林洪彬 編著程序清單function varargout = untitled(varargin)gui_singleton = 1;gui_state = struct(gui_name, mfilename, . gui_singleto
30、n, gui_singleton, . gui_openingfcn, untitled_openingfcn, . gui_outputfcn, untitled_outputfcn, . gui_layoutfcn, , . gui_callback, );if nargin & ischar(varargin1) gui_state.gui_callback = str2func(varargin1);end if nargout varargout1:nargout = gui_mainfcn(gui_state, varargin:);else gui_mainfcn(gui_sta
31、te, varargin:);endfunction untitled_openingfcn(hobject, eventdata, handles, varargin)handles.output = hobject; guidata(hobject, handles);function varargout = untitled_outputfcn(hobject, eventdata, handles) varargout1 = handles.output;function pushbutton1_callback(hobject, eventdata, handles)%按鍵4對應功能
32、f1=697,770,852,941; f2=1209,1336,1477,1633; n=0:1023; x = sin(2*pi*n*f1(2)/8000) + sin(2*pi*n*f2(1)/8000); sound(x,8000); axes(handles.axes1); plot(n,x)%grid;xlabel(k);ylabel(|x(k)|) fftx=abs(fft(x); axes(handles.axes2); n=length(x); t=n/n*8000; plot(t,fftx)%grid;xlabel(k);ylabel(|x(k)|) set(handles
33、.text5,string,4) num=get(handles.edit7,string);n=length(num);if n=11; errordlg(數字框已滿!);set(handles.edit7,string,);else nu=strcat(get(handles.edit7,string),get(handles.pushbutton1,string);set(handles.edit7,string,nu);endfunction pushbutton7_callback(hobject, eventdata, handles) %按鍵#對應功能f1=697,770,852
34、,941; f2=1209,1336,1477,1633; n=0:1023; x = sin(2*pi*n*f1(4)/8000) + sin(2*pi*n*f2(3)/8000); sound(x,8000); axes(handles.axes1); plot(n,x)%grid;xlabel(k);ylabel(|x(k)|) fftx=abs(fft(x); axes(handles.axes2); n=length(x); t=n/n*8000;plot(t,fftx) set(handles.text5,string,#) num=get(handles.edit7,string
35、);n=length(num);if n=11; errordlg(數字框已滿!);set(handles.edit7,string,);else nu=strcat(get(handles.edit7,string),get(handles.pushbutton7,string);set(handles.edit7,string,nu);end function pushbutton2_callback(hobject, eventdata, handles)%按鍵7對應功能f1=697,770,852,941; f2=1209,1336,1477,1633; n=0:1023; x = s
36、in(2*pi*n*f1(3)/8000) + sin(2*pi*n*f2(1)/8000); sound(x,8000); axes(handles.axes1); plot(n,x)%grid;xlabel(k);ylabel(|x(k)|) fftx=abs(fft(x); axes(handles.axes2); n=length(x); t=n/n*8000; plot(t,fftx)%grid;xlabel(k);ylabel(|x(k)|) set(handles.text5,string,7) num=get(handles.edit7,string);n=length(num
37、);if n=11; errordlg(數字框已滿!);set(handles.edit7,string,);else nu=strcat(get(handles.edit7,string),get(handles.pushbutton2,string);set(handles.edit7,string,nu);endfunction pushbutton3_callback(hobject, eventdata, handles)%按鍵6對應功能f1=697,770,852,941; f2=1209,1336,1477,1633; n=0:1023; x = sin(2*pi*n*f1(2)
38、/8000) + sin(2*pi*n*f2(3)/8000); sound(x,8000); axes(handles.axes1); plot(n,x)%grid;xlabel(k);ylabel(|x(k)|) fftx=abs(fft(x); axes(handles.axes2); n=length(x); t=n/n*8000; plot(t,fftx)%grid;xlabel(k);ylabel(|x(k)|) set(handles.text5,string,6) num=get(handles.edit7,string);n=length(num);if n=11; erro
39、rdlg(數字框已滿!);set(handles.edit7,string,);else nu=strcat(get(handles.edit7,string),get(handles.pushbutton3,string);set(handles.edit7,string,nu);endfunction pushbutton4_callback(hobject, eventdata, handles)%按鍵5對應功能f1=697,770,852,941; f2=1209,1336,1477,1633; n=0:1023; x = sin(2*pi*n*f1(2)/8000) + sin(2*
40、pi*n*f2(2)/8000); sound(x,8000); axes(handles.axes1); plot(n,x)%grid;xlabel(k);ylabel(|x(k)|) fftx=abs(fft(x); axes(handles.axes2); n=length(x); t=n/n*8000; plot(t,fftx)%grid;xlabel(k);ylabel(|x(k)|) set(handles.text5,string,5) num=get(handles.edit7,string);n=length(num);if n=11; errordlg(數字框已滿!);se
41、t(handles.edit7,string,);else nu=strcat(get(handles.edit7,string),get(handles.pushbutton4,string);set(handles.edit7,string,nu);endfunction pushbutton5_callback(hobject, eventdata, handles)%按鍵8對應功能f1=697,770,852,941; f2=1209,1336,1477,1633; n=0:1023; x = sin(2*pi*n*f1(3)/8000) + sin(2*pi*n*f2(2)/8000
42、); sound(x,8000); axes(handles.axes1); plot(n,x)%grid;xlabel(k);ylabel(|x(k)|) fftx=abs(fft(x); axes(handles.axes2); n=length(x); t=n/n*8000; plot(t,fftx)%grid;xlabel(k);ylabel(|x(k)|) set(handles.text5,string,8) num=get(handles.edit7,string);n=length(num);if n=11; errordlg(數字框已滿!);set(handles.edit7
43、,string,);else nu=strcat(get(handles.edit7,string),get(handles.pushbutton5,string);set(handles.edit7,string,nu);endfunction pushbutton6_callback(hobject, eventdata, handles)%按鍵9對應功能f1=697,770,852,941; f2=1209,1336,1477,1633; n=0:1023; x = sin(2*pi*n*f1(3)/8000) + sin(2*pi*n*f2(3)/8000); sound(x,8000
44、); axes(handles.axes1); plot(n,x)%grid;xlabel(k);ylabel(|x(k)|) fftx=abs(fft(x); axes(handles.axes2); n=length(x); t=n/n*8000; plot(t,fftx)%grid;xlabel(k);ylabel(|x(k)|) set(handles.text5,string,9) num=get(handles.edit7,string);n=length(num);if n=11; errordlg(數字框已滿!);set(handles.edit7,string,);else
45、nu=strcat(get(handles.edit7,string),get(handles.pushbutton6,string);set(handles.edit7,string,nu);endfunction pushbutton8_callback(hobject, eventdata, handles)%按鍵0對應功能f1=697,770,852,941; f2=1209,1336,1477,1633; n=0:1023; x = sin(2*pi*n*f1(4)/8000) + sin(2*pi*n*f2(2)/8000); sound(x,8000); axes(handles
46、.axes1); plot(n,x)%grid;xlabel(k);ylabel(|x(k)|) fftx=abs(fft(x); axes(handles.axes2); n=length(x); t=n/n*8000; plot(t,fftx)%grid;xlabel(k);ylabel(|x(k)|) set(handles.text5,string,0) num=get(handles.edit7,string);n=length(num);if n=11; errordlg(數字框已滿!);set(handles.edit7,string,);else nu=strcat(get(h
47、andles.edit7,string),get(handles.pushbutton8,string);set(handles.edit7,string,nu);endfunction pushbutton9_callback(hobject, eventdata, handles)%按鍵*對應功能f1=697,770,852,941; f2=1209,1336,1477,1633; n=0:1023; x = sin(2*pi*n*f1(4)/8000) + sin(2*pi*n*f2(1)/8000); sound(x,8000); axes(handles.axes1); plot(n,x)%grid;xlabel(k);ylabel(|x(k)|) fftx=abs(fft(x); axes(handles.axes2); n=length(x); t=n/n*8000; plot(t,fftx)%grid;xlabel(k);ylabel(|x(k)|) set(handles.text5,string,*) num=get(handles.edit7,string);n=length(num);if n=11; errordlg(數字框已滿!);se
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國慢性阻塞性肺疾病基層診療與管理指南(2024年)解讀 2
- 圖木舒克職業技術學院《中級俄語》2023-2024學年第一學期期末試卷
- 新疆維吾爾自治區喀什二中2025屆下學期高三物理試題第一次模擬考試試卷含解析
- 遼寧省四校聯考2024-2025學年高三下學期第一次診斷性考試英語試題試卷含解析
- 南昌應用技術師范學院《專題口譯》2023-2024學年第二學期期末試卷
- 江蘇省南京市示范名校2025年高三第六次月考含解析
- 2025年廣西安全員B證考試試題題庫
- 臺州科技職業學院《測量學實訓》2023-2024學年第二學期期末試卷
- 天津開發區職業技術學院《模式識別技術》2023-2024學年第二學期期末試卷
- 2025年甘肅金昌市絲路眾創網絡科技有限公司招聘筆試參考題庫含答案解析
- 09J202-1 坡屋面建筑構造(一)-1
- 小學生運動會安全教育課件
- 扁平足的癥狀與矯正方法
- 青春健康知識100題
- 員工考勤培訓課件
- 危機處理與應急管理
- 國開電大操作系統-Linux系統使用-實驗報告
- 黑臭水體監測投標方案(技術方案)
- 2023年高考生物全國通用易錯題13致死類的遺傳題(解析版)
- 四百字作文格子稿紙(可打印編輯)
- 中建項目裝飾裝修工程施工方案
評論
0/150
提交評論