處理實(shí)驗(yàn)全流程:從時(shí)域到頻域再到濾波器設(shè)計(jì))
簡(jiǎn)介這份資源是南京郵電大學(xué)「信號(hào)分析與處理實(shí)驗(yàn)」課程的完整實(shí)驗(yàn)報(bào)告面向正在修讀數(shù)字信號(hào)處理、信號(hào)與系統(tǒng)相關(guān)課程的高校學(xué)生以及需要借助 MATLAB 完成信號(hào)處理實(shí)驗(yàn)的初學(xué)者。報(bào)告系統(tǒng)記錄了信號(hào)的產(chǎn)生和運(yùn)算、連續(xù)時(shí)間信號(hào)的頻域分析、信號(hào)的時(shí)域采樣和重建、離散傅里葉變換與應(yīng)用等核心實(shí)驗(yàn)并延伸至連續(xù)時(shí)間系統(tǒng)的頻域與復(fù)頻域分析、數(shù)字濾波器設(shè)計(jì)及信號(hào)處理綜合應(yīng)用覆蓋從基本序列繪制到卷積運(yùn)算、頻譜分析的完整流程。資源包內(nèi)含 1 個(gè) docx 文檔壓縮后約 1.02MB文檔中配有 MATLAB 程序示例、運(yùn)行結(jié)果與圖形分析便于對(duì)照理解時(shí)域和頻域特性。目前已有 952 人學(xué)習(xí)下載適合作為實(shí)驗(yàn)預(yù)習(xí)、報(bào)告撰寫參考與 DSP 入門練習(xí)的實(shí)操素材。1. 信號(hào)分析與處理實(shí)驗(yàn)一張從時(shí)域到頻域再到濾波器的完整地圖如果你正在學(xué)信號(hào)與系統(tǒng)、數(shù)字信號(hào)處理或者正在準(zhǔn)備這門課的實(shí)驗(yàn)驗(yàn)收大概率會(huì)有一種感覺(jué)公式都認(rèn)識(shí)一上 MATLAB 就不知道從哪下手。這份實(shí)驗(yàn)報(bào)告覆蓋了八個(gè)實(shí)驗(yàn)?zāi)K從最基礎(chǔ)的信號(hào)產(chǎn)生與運(yùn)算一路走到連續(xù)時(shí)間頻域分析、時(shí)域采樣與重建、離散傅里葉變換、系統(tǒng)頻域與復(fù)頻域分析、數(shù)字濾波器設(shè)計(jì)最后落到綜合應(yīng)用。梳理下來(lái)會(huì)發(fā)現(xiàn)它其實(shí)是一條非常清晰的主線先學(xué)會(huì)“造信號(hào)”再學(xué)會(huì)“看信號(hào)”然后學(xué)會(huì)“采樣與重建”接著掌握“DFT 這個(gè)工具”最后用“濾波器”把理論變成能用的系統(tǒng)。適合誰(shuí)適合正在做信號(hào)處理實(shí)驗(yàn)、準(zhǔn)備實(shí)驗(yàn)考試、或者想用 MATLAB 把課本公式跑通一遍的人。這張地圖的價(jià)值在于它把零散的實(shí)驗(yàn)步驟串成了可復(fù)習(xí)的體系而不是八個(gè)孤立的代碼片段。2. 信號(hào)產(chǎn)生與基本運(yùn)算從單位階躍到線性卷積的復(fù)習(xí)重點(diǎn)2.1 連續(xù)信號(hào)與離散序列的生成套路實(shí)驗(yàn)一的核心是“用 MATLAB 把數(shù)學(xué)表達(dá)式變成可畫的波形”。梳理下來(lái)會(huì)發(fā)現(xiàn)所有序列生成都遵循同一個(gè)模式先定義自變量范圍再定義參數(shù)最后用向量化運(yùn)算生成序列值。比如單位階躍序列 u[n] 和 u[n7] 的對(duì)比本質(zhì)上是在復(fù)習(xí)“移位”這個(gè)運(yùn)算——u[n7] 就是把 u[n] 向左移了 7 個(gè)點(diǎn)。代碼里用zeros(1,10)和ones(1,20)拼接實(shí)際上是在手動(dòng)構(gòu)造分段序列這種寫法在實(shí)驗(yàn)報(bào)告里很常見(jiàn)但復(fù)習(xí)時(shí)要理解它背后的含義序列在 n-10 到 n-1 取 0n0 到 n20 取 1。復(fù)指數(shù)序列 x[n]1.5e^{(0.2j3)n} 的實(shí)部和虛部分別繪制這個(gè)實(shí)驗(yàn)點(diǎn)最容易忽略的是復(fù)指數(shù)序列的實(shí)部是衰減振蕩虛部也是衰減振蕩但兩者相位差 90 度。實(shí)指數(shù)序列 x[n]2(0.8)^n 則是在復(fù)習(xí)“指數(shù)衰減”的基本形態(tài)。正弦序列 x[n]2.5sin(0.16πn-π/2) 的基本周期計(jì)算是重點(diǎn)數(shù)字頻率 ω0.16π周期 N2π/ω12.5但序列周期必須是整數(shù)所以基本周期是 25。這里最容易翻車的地方是很多人直接寫 12.5忽略了離散序列周期必須為整數(shù)的約束。% 單位階躍序列 u[n] 與 u[n7] 的對(duì)比生成 n -10:20; x [zeros(1,10) 1 ones(1,20)]; % u[n]n0 處跳變 M 7; xd [zeros(1,10M) 1 ones(1,20-M)]; % u[n7]左移7點(diǎn) subplot(1,2,1); stem(n,x); xlabel(n); ylabel(u[n]); subplot(1,2,2); stem(n,xd); xlabel(n); ylabel(u[n7]);這段代碼的關(guān)鍵參數(shù)是zeros(1,10)對(duì)應(yīng) n-10 到 n-1 的 10 個(gè)點(diǎn)ones(1,20)對(duì)應(yīng) n0 到 n20 的 21 個(gè)點(diǎn)。移位操作通過(guò)改變零填充的長(zhǎng)度實(shí)現(xiàn)左移 7 點(diǎn)就是在前面多補(bǔ) 7 個(gè)零同時(shí)后面少 7 個(gè)一。復(fù)習(xí)時(shí)要能徒手寫出這個(gè)拼接邏輯而不是背代碼。2.2 序列運(yùn)算與線性卷積的易錯(cuò)細(xì)節(jié)序列的加法和乘法看起來(lái)簡(jiǎn)單但實(shí)驗(yàn)里 x[n]{1,2,3,4} 和 y[n]{3,4,5,6} 的逐點(diǎn)乘用的是.*而不是*。這是 MATLAB 里最容易踩的坑矩陣乘法*和逐點(diǎn)乘法.*混用結(jié)果完全不對(duì)。偶部與奇部的分解是另一個(gè)重點(diǎn)偶部 xe[n]0.5(x[n]x[-n])奇部 xo[n]0.5(x[n]-x[-n])。實(shí)驗(yàn)里用fliplr(x)實(shí)現(xiàn)翻轉(zhuǎn)但要注意fliplr只翻轉(zhuǎn)數(shù)值順序不改變時(shí)間軸索引所以當(dāng) n 的范圍不是以 0 為中心時(shí)直接翻轉(zhuǎn)會(huì)出錯(cuò)。正確的做法是先確認(rèn)序列的時(shí)間軸關(guān)于原點(diǎn)對(duì)稱或者手動(dòng)構(gòu)造 x[-n]。線性卷積 y[n]x[n]*h[n] 是實(shí)驗(yàn)一的壓軸。x[n](-1)^n 長(zhǎng)度 15h[n]cos(0.25πn) 長(zhǎng)度 8卷積結(jié)果長(zhǎng)度是 158-122。用conv(x,h)計(jì)算后時(shí)間軸要重新定義為 0:21。這里最容易漏掉的是卷積后的時(shí)間軸起點(diǎn)是兩序列起點(diǎn)之和終點(diǎn)是兩序列終點(diǎn)之和。如果 x 和 h 的起點(diǎn)不是 0時(shí)間軸計(jì)算會(huì)更復(fù)雜。復(fù)習(xí)時(shí)要記住公式y(tǒng) 的長(zhǎng)度 N1N2-1y 的起點(diǎn) n1_start n2_start。提示conv函數(shù)只返回?cái)?shù)值向量不返回時(shí)間軸。畫圖前必須手動(dòng)構(gòu)造正確的時(shí)間軸否則波形位置會(huì)整體偏移。3. 連續(xù)時(shí)間信號(hào)頻域分析傅里葉級(jí)數(shù)、吉布斯現(xiàn)象與語(yǔ)音頻譜3.1 周期矩形脈沖的頻譜變化規(guī)律實(shí)驗(yàn)二的核心是“從時(shí)域波形到頻域譜線”。周期矩形脈沖信號(hào)的指數(shù)形式傅里葉級(jí)數(shù)雙邊幅度譜和相位譜的繪制重點(diǎn)在于理解頻譜的離散性和諧波性。當(dāng) A1τ0.1sT0.5s 時(shí)譜線間隔是 1/T2Hz包絡(luò)是 sinc 函數(shù)。修改 T 為 1s 和 2s 后梳理下來(lái)會(huì)發(fā)現(xiàn)兩個(gè)規(guī)律第一T 增大譜線間隔變小頻譜變得更密集第二T 增大各次諧波的幅度整體減小因?yàn)槟芰勘环稚⒌搅烁嘀C波上。這個(gè)對(duì)比是考試和實(shí)驗(yàn)驗(yàn)收的高頻考點(diǎn)很多人只記得“T 變大譜線變密”卻忘了幅度也在變小。各次諧波疊加的實(shí)驗(yàn)N152550是在驗(yàn)證傅里葉級(jí)數(shù)的收斂性。N 較小時(shí)合成波形有較大的諧波失真邊緣不夠陡峭N 增大波形逐漸逼近矩形脈沖。但這里有一個(gè)反直覺(jué)的點(diǎn)即使 N 很大不連續(xù)點(diǎn)附近仍然存在過(guò)沖這就是吉布斯現(xiàn)象。實(shí)驗(yàn)里用程序求出過(guò)沖最大幅值為 1.0896約等于跳變幅度的 9%。這個(gè)數(shù)字要記住吉布斯現(xiàn)象中過(guò)沖量不隨 N 增大而消失而是趨于一個(gè)常數(shù)大約是跳變幅度的 8.95%。% 計(jì)算周期矩形脈沖有限項(xiàng)傅里葉級(jí)數(shù)合成的過(guò)沖 function p2_4(N) t -2:10^(-4):2; A 1; tau 1; T 2; Omega_0 2*pi/T; c0 A*tau/T; f_N c0*ones(1,length(t)); for k 1:N f_N f_N 2*A*tau/T*sinc(k*Omega_0*tau/2/pi)*cos(k*Omega_0*t); end overshoot max(f_N); fprintf(The maximum overshoot is %.4f\n, overshoot); end這段代碼的關(guān)鍵是sinc函數(shù)的參數(shù)寫法sinc(k*Omega_0*tau/2/pi)對(duì)應(yīng)的是抽樣函數(shù) sin(x)/x 的形式。循環(huán)累加各次諧波最后用max找過(guò)沖。復(fù)習(xí)時(shí)要能解釋為什么過(guò)沖出現(xiàn)在不連續(xù)點(diǎn)附近以及為什么 N 增大時(shí)過(guò)沖位置越來(lái)越靠近跳變點(diǎn)。3.2 語(yǔ)音信號(hào)的頻譜差異與男聲轉(zhuǎn)女聲思路實(shí)驗(yàn)二還包含一個(gè)非常實(shí)用的部分錄制男聲和女聲做 FFT 后比較頻譜。男聲的基音頻率低波形振幅變化大幅度譜能量集中在低頻女聲基音頻率高波形更細(xì)致幅度譜能量分布相對(duì)均勻。這個(gè)對(duì)比不僅是實(shí)驗(yàn)報(bào)告的內(nèi)容也是理解“基音頻率”和“共振峰”概念的入口。男聲轉(zhuǎn)女聲的方法實(shí)驗(yàn)報(bào)告里列了五條基頻調(diào)整、聲道長(zhǎng)度調(diào)整、諧波調(diào)整、聲道轉(zhuǎn)換模型、聲音特征轉(zhuǎn)換。梳理下來(lái)會(huì)發(fā)現(xiàn)最核心的是基頻調(diào)整和聲道長(zhǎng)度調(diào)整其他方法都是在這兩個(gè)基礎(chǔ)上的擴(kuò)展。復(fù)習(xí)時(shí)要能說(shuō)出男聲基頻典型范圍是 80-180Hz女聲是 160-300Hz所以基頻搬移是最直接的轉(zhuǎn)換手段。注意語(yǔ)音頻譜分析時(shí)FFT 點(diǎn)數(shù)要足夠大否則頻率分辨率不夠基音頻率的譜峰可能分不開(kāi)。通常取 1024 或 2048 點(diǎn)。4. 時(shí)域采樣與重建奈奎斯特間隔、混疊判斷與誤差分析4.1 采樣定理的驗(yàn)證與混疊判斷實(shí)驗(yàn)三的核心是“采樣間隔 Ts 如何影響頻譜”。升余弦脈沖信號(hào)的頻譜大部分集中在 [0, τ/2π] 之間截止頻率 Ωm2奈奎斯特間隔 Tsπ/2。當(dāng) Tsπ/2 時(shí)采樣后頻譜未發(fā)生混疊當(dāng) Ts2 時(shí)頻譜發(fā)生了混疊。這個(gè)判斷的邏輯是采樣后頻譜是原頻譜以 2π/Ts 為周期進(jìn)行延拓如果延拓后的頻譜在相鄰周期之間發(fā)生重疊就是混疊。復(fù)習(xí)時(shí)要能畫出頻譜延拓的示意圖并解釋為什么 Ts 越大延拓周期越小越容易混疊。這里最容易翻車的地方是很多人只記“Ts 小于奈奎斯特間隔就不混疊”但實(shí)際判斷時(shí)要看信號(hào)的最高頻率分量而不是只看信號(hào)的主瓣寬度。升余弦脈沖的頻譜雖然大部分集中在 Ωm 以內(nèi)但理論上無(wú)限延伸所以嚴(yán)格來(lái)說(shuō)只要 Ts 有限總會(huì)有高頻分量的混疊只是混疊程度不同。實(shí)驗(yàn)里判斷“未發(fā)生混疊”是指主瓣沒(méi)有重疊而不是絕對(duì)沒(méi)有混疊。4.2 信號(hào)重建與誤差來(lái)源信號(hào)重建的實(shí)驗(yàn)P3_2是用低通濾波器從采樣信號(hào)中恢復(fù)原信號(hào)。當(dāng) Ts2低通濾波器截止頻率 ΩcΩm 時(shí)重建誤差大大增加。誤差來(lái)源有兩個(gè)第一采樣間隔增大導(dǎo)致混疊高頻分量折疊到低頻無(wú)法通過(guò)低通濾波器濾除第二低通濾波器截止頻率減小導(dǎo)致部分有效高頻分量被濾除表現(xiàn)為重建信號(hào)失真。這兩個(gè)因素疊加誤差比 Tsπ/2 時(shí)大得多。% 采樣與重建的核心參數(shù)設(shè)置 Ts 2; % 采樣間隔大于奈奎斯特間隔 pi/2 Wc 2; % 低通濾波器截止頻率等于信號(hào)截止頻率 t 0:Ts:10; % 采樣時(shí)間軸 x cos(t); % 示例信號(hào) % 重建理想低通濾波在頻域是截?cái)嘣跁r(shí)域是 sinc 插值 % 實(shí)際實(shí)驗(yàn)中用濾波器函數(shù)實(shí)現(xiàn)誤差通過(guò)與原信號(hào)對(duì)比計(jì)算復(fù)習(xí)時(shí)要能解釋為什么 Ts 增大導(dǎo)致誤差增大因?yàn)榛殳B分量落在了重建濾波器的通帶內(nèi)無(wú)法被濾除。為什么 Wc 減小也導(dǎo)致誤差增大因?yàn)椴糠钟行盘?hào)分量被濾除了。這兩個(gè)原因要分開(kāi)說(shuō)不能混在一起。提示重建誤差的計(jì)算通常用均方誤差或最大絕對(duì)誤差。實(shí)驗(yàn)報(bào)告里用的是波形對(duì)比復(fù)習(xí)時(shí)要能寫出誤差公式。5. 離散傅里葉變換與數(shù)字濾波器從 DFT 到系統(tǒng)頻域分析5.1 DFT 的基本概念與 MATLAB 實(shí)現(xiàn)離散傅里葉變換DFT是連接時(shí)域和頻域的橋梁。實(shí)驗(yàn)四的核心是理解 DFT 的定義X[k]Σx[n]e^{-j2πkn/N}以及如何用 MATLAB 的fft函數(shù)計(jì)算。梳理下來(lái)會(huì)發(fā)現(xiàn)DFT 的物理意義是把有限長(zhǎng)序列的頻譜在 [0,2π] 上等間隔采樣 N 個(gè)點(diǎn)。頻率分辨率是 2π/N所以 N 越大頻譜越精細(xì)。這里最容易忽略的是DFT 隱含周期性時(shí)域序列被周期延拓頻域也是離散周期譜。如果序列長(zhǎng)度不是 N需要補(bǔ)零到 N補(bǔ)零不改變頻譜形狀只是增加了采樣密度。數(shù)字濾波器的設(shè)計(jì)是實(shí)驗(yàn)四的另一個(gè)重點(diǎn)。不同類型的濾波器低通、高通、帶通、帶阻設(shè)計(jì)核心是確定濾波器階數(shù)和截止頻率。MATLAB 里常用butter、cheby1、ellip等函數(shù)。復(fù)習(xí)時(shí)要能說(shuō)出巴特沃斯濾波器通帶最平坦切比雪夫?yàn)V波器過(guò)渡帶更陡但有波紋橢圓濾波器過(guò)渡帶最陡但通帶和阻帶都有波紋。選擇哪種取決于具體應(yīng)用對(duì)幅頻特性的要求。5.2 連續(xù)時(shí)間系統(tǒng)的頻域與復(fù)頻域分析連續(xù)時(shí)間系統(tǒng)的頻域分析核心是系統(tǒng)函數(shù) H(jω) 和頻率響應(yīng)。復(fù)頻域分析則是拉普拉斯變換系統(tǒng)函數(shù) H(s)極點(diǎn)決定穩(wěn)定性。梳理下來(lái)會(huì)發(fā)現(xiàn)頻域分析和復(fù)頻域分析的關(guān)系是頻域是復(fù)頻域在 sjω 時(shí)的特例。實(shí)驗(yàn)里用 MATLAB 畫波特圖觀察幅頻和相頻特性重點(diǎn)看截止頻率、諧振峰和相位變化。最容易錯(cuò)的地方是把 H(jω) 和 H(s) 混為一談忘記 sσjω 中的實(shí)部 σ 對(duì)應(yīng)衰減因子。數(shù)字濾波器的應(yīng)用實(shí)驗(yàn)通常是用設(shè)計(jì)好的濾波器對(duì)含噪信號(hào)進(jìn)行濾波然后比較濾波前后的頻譜。復(fù)習(xí)時(shí)要能解釋為什么濾波器能去噪因?yàn)樵肼暤念l譜通常分布在高頻而信號(hào)的頻譜集中在低頻低通濾波器可以保留信號(hào)、抑制噪聲。但如果噪聲和信號(hào)頻譜重疊濾波器就無(wú)能為力了。注意設(shè)計(jì)濾波器時(shí)截止頻率要?dú)w一化到奈奎斯特頻率。MATLAB 里butter函數(shù)的 Wn 參數(shù)是歸一化頻率1 對(duì)應(yīng)奈奎斯特頻率。6. 查漏補(bǔ)缺一份可執(zhí)行的復(fù)習(xí)清單與避坑指南復(fù)習(xí)到這一步最怕的是“每個(gè)實(shí)驗(yàn)都看過(guò)但合上書就串不起來(lái)”。我的做法是拿一張白紙不翻代碼先畫出八個(gè)實(shí)驗(yàn)的模塊關(guān)系圖——信號(hào)產(chǎn)生是輸入頻域分析是觀察手段采樣是離散化橋梁DFT 是計(jì)算工具濾波器是輸出系統(tǒng)。畫不出來(lái)就說(shuō)明某個(gè)環(huán)節(jié)還是散的。下面這份清單是我自己每次復(fù)習(xí)都會(huì)走一遍的流程按順序過(guò)基本能覆蓋實(shí)驗(yàn)驗(yàn)收和筆試的高頻考點(diǎn)復(fù)習(xí)模塊必須能徒手寫出的內(nèi)容常見(jiàn)翻車點(diǎn)信號(hào)產(chǎn)生單位階躍、復(fù)指數(shù)、實(shí)指數(shù)、正弦序列的生成代碼框架時(shí)間軸與序列長(zhǎng)度不匹配序列運(yùn)算加、乘、移位、偶奇分解、卷積的時(shí)間軸計(jì)算*與.*混用卷積后時(shí)間軸起點(diǎn)算錯(cuò)傅里葉級(jí)數(shù)周期矩形脈沖頻譜隨 T 變化的規(guī)律吉布斯過(guò)沖約 9%忘記 T 增大時(shí)幅度也減小語(yǔ)音頻譜男聲女聲基頻范圍男轉(zhuǎn)女的核心方法只記方法名說(shuō)不出基頻搬移的具體含義采樣定理奈奎斯特間隔計(jì)算混疊判斷邏輯把“主瓣不重疊”當(dāng)成“絕對(duì)不混疊”信號(hào)重建誤差增大的兩個(gè)原因混疊和濾波器截止頻率把兩個(gè)原因混在一起說(shuō)DFT頻率分辨率 2π/N補(bǔ)零的作用忘記 DFT 隱含周期性濾波器設(shè)計(jì)巴特沃斯、切比雪夫、橢圓濾波器的區(qū)別截止頻率忘記歸一化最容易忽略的是“時(shí)間軸”這件事。實(shí)驗(yàn)一里所有序列運(yùn)算只要時(shí)間軸錯(cuò)了波形位置就全錯(cuò)。我自己的血淚經(jīng)驗(yàn)是每次用conv或fliplr之后強(qiáng)制檢查一遍時(shí)間軸的起點(diǎn)和終點(diǎn)確認(rèn)長(zhǎng)度匹配。另一個(gè)容易漏的是采樣定理里的“截止頻率”定義——升余弦脈沖的截止頻率不是主瓣寬度而是頻譜包絡(luò)第一次過(guò)零點(diǎn)的位置這個(gè)在實(shí)驗(yàn)提示里寫得很清楚但復(fù)習(xí)時(shí)經(jīng)常被跳過(guò)。還有一個(gè)玄學(xué)問(wèn)題為什么 N 增大吉布斯過(guò)沖不消失因?yàn)楦道锶~級(jí)數(shù)在跳變點(diǎn)處收斂到跳變幅度的中點(diǎn)而不是跳變值本身。有限項(xiàng)合成時(shí)跳變點(diǎn)附近的振蕩幅度趨于常數(shù)這個(gè)常數(shù)就是過(guò)沖量。理解這一點(diǎn)就不會(huì)再糾結(jié)“為什么 N 不夠大”。從那以后我每次做信號(hào)處理實(shí)驗(yàn)都強(qiáng)制走一遍“時(shí)間軸檢查 → 參數(shù)歸一化檢查 → 頻譜混疊判斷”這三步基本沒(méi)再翻過(guò)車。希望這份梳理能幫到你。本文還有配套的精品資源點(diǎn)擊獲取