分析與處理實(shí)驗(yàn)全解析:從時(shí)域到頻域再到系統(tǒng))
簡(jiǎn)介這份資源是南京郵電大學(xué)「信號(hào)分析與處理實(shí)驗(yàn)」課程的完整實(shí)驗(yàn)報(bào)告面向正在修讀數(shù)字信號(hào)處理、信號(hào)與系統(tǒng)相關(guān)課程的高校學(xué)生以及需要借助 MATLAB 完成實(shí)驗(yàn)與課程設(shè)計(jì)的自學(xué)者。報(bào)告覆蓋信號(hào)的產(chǎn)生和運(yùn)算、連續(xù)時(shí)間信號(hào)的頻域分析、時(shí)域采樣與重建、離散傅里葉變換及應(yīng)用等核心實(shí)驗(yàn)并延伸至連續(xù)時(shí)間系統(tǒng)頻域與復(fù)頻域分析、數(shù)字濾波器設(shè)計(jì)及信號(hào)處理綜合應(yīng)用配有程序代碼、波形圖與結(jié)果解析便于對(duì)照理解時(shí)域與頻域特性。資源包共 1 個(gè) docx 文件約 1.02MB內(nèi)容為可直接參考的實(shí)驗(yàn)報(bào)告文檔結(jié)構(gòu)完整、條理清晰。目前已有 952 人學(xué)習(xí)下載適合作為實(shí)驗(yàn)預(yù)習(xí)、報(bào)告撰寫(xiě)與 DSP 入門練習(xí)的參考材料。1. 信號(hào)分析與處理實(shí)驗(yàn)一張從時(shí)域到頻域再到系統(tǒng)的知識(shí)地圖很多人復(fù)習(xí)信號(hào)分析與處理時(shí)習(xí)慣按教材章節(jié)從頭翻翻到傅里葉變換已經(jīng)忘了拉普拉斯翻到濾波器又忘了采樣定理。這門課真正的難點(diǎn)不在單個(gè)公式而在于時(shí)域、頻域、復(fù)頻域三條線始終交織在一起。這份實(shí)驗(yàn)報(bào)告把整門課拆成四個(gè)實(shí)驗(yàn)信號(hào)的產(chǎn)生和運(yùn)算、連續(xù)時(shí)間信號(hào)的頻域分析、信號(hào)的時(shí)域采樣和重建、離散傅里葉變換與應(yīng)用后面還延伸到連續(xù)時(shí)間系統(tǒng)的頻域和復(fù)頻域分析、數(shù)字濾波器設(shè)計(jì)與綜合應(yīng)用。梳理下來(lái)會(huì)發(fā)現(xiàn)它其實(shí)是一條完整鏈路先會(huì)造信號(hào)再看清信號(hào)的頻率成分然后理解采樣為什么不會(huì)丟信息最后用系統(tǒng)去改變信號(hào)。適合正在做實(shí)驗(yàn)報(bào)告、準(zhǔn)備期末復(fù)習(xí)、或者想用 MATLAB 把 DSP 概念跑通的人。下面按知識(shí)模塊逐層拆開(kāi)重點(diǎn)標(biāo)出容易翻車的地方。2. 信號(hào)產(chǎn)生與基本運(yùn)算離散序列和連續(xù)信號(hào)的復(fù)習(xí)重點(diǎn)2.1 常用信號(hào)在 MATLAB 里到底怎么表示實(shí)驗(yàn)一的核心是“造信號(hào)”。連續(xù)信號(hào)和離散序列在 MATLAB 里的表示方式完全不同這是第一個(gè)容易混淆的點(diǎn)。連續(xù)時(shí)間信號(hào)用時(shí)間向量加plot離散序列用序號(hào)向量加stem。單位階躍序列u[n]不能直接調(diào)用階躍函數(shù)而是用邏輯判斷或分段拼接。比如要畫(huà)u[n]和u[n7]本質(zhì)是控制序列的起始位置% 單位階躍序列 u[n] 與 u[n7] 的對(duì)比 n -10:20; x [zeros(1,10) 1 ones(1,20)]; % n0 處為 1之前為 0 subplot(1,2,1); stem(n,x); xlabel(n); ylabel(u[n]); M 7; xd [zeros(1,10M) 1 ones(1,20-M)]; % 左移 7 位起點(diǎn)提前 subplot(1,2,2); stem(n,xd); xlabel(n); ylabel(u[n7]);這里的關(guān)鍵參數(shù)是zeros(1,10)和ones(1,20)的長(zhǎng)度它們決定了階躍點(diǎn)落在哪個(gè)序號(hào)上。移位操作在離散域就是數(shù)組索引的平移不是時(shí)間軸整體加減。復(fù)指數(shù)序列x[n]1.5e^{(0.2j3)n}則要注意實(shí)部和虛部分開(kāi)畫(huà)real和imag分別取分量否則一張圖看不出復(fù)數(shù)序列的物理意義。實(shí)指數(shù)序列x[n]2(0.8)^n用點(diǎn)乘.^而不是矩陣乘這是 MATLAB 里最常見(jiàn)的翻車點(diǎn)之一。正弦序列的周期判斷是實(shí)驗(yàn)一的重點(diǎn)。x[n]2.5sin(0.16πn-π/2)的基本周期不是直接讀數(shù)字而是用2π/ω算再取最小正整數(shù)。ω0.16π時(shí)2π/0.16π12.5不是整數(shù)所以這個(gè)序列其實(shí)不是周期序列。但實(shí)驗(yàn)里給出的答案是 12.5說(shuō)明它按連續(xù)正弦的周期來(lái)理解。這里要區(qū)分“離散周期序列”和“連續(xù)正弦采樣后的周期”考試?yán)锝?jīng)常在這設(shè)陷阱。2.2 序列運(yùn)算與線性卷積的易錯(cuò)細(xì)節(jié)序列的加、乘、移位、卷積是實(shí)驗(yàn)一的操作重點(diǎn)。加法和乘法要求兩個(gè)序列長(zhǎng)度一致、序號(hào)對(duì)齊否則 MATLAB 會(huì)直接報(bào)錯(cuò)。偶部x_e[n]和奇部x_o[n]的分解公式是% 序列奇偶分解 n -2:2; x [1 2 4 -5 -2]; y fliplr(x); % 翻轉(zhuǎn)序列 xe 0.5*(x y); % 偶部 xo 0.5*(x - y); % 奇部fliplr只翻轉(zhuǎn)數(shù)值順序不改變序號(hào)向量。如果序列不是關(guān)于n0對(duì)稱翻轉(zhuǎn)后對(duì)應(yīng)的序號(hào)會(huì)錯(cuò)位這是最容易忽略的地方。線性卷積conv(x,h)的結(jié)果長(zhǎng)度是length(x)length(h)-1畫(huà)圖時(shí)序號(hào)要從 0 開(kāi)始重新生成不能沿用原來(lái)的n。實(shí)驗(yàn)里x[n](-1)^n和h[n]cos(0.25πn)卷積后長(zhǎng)度是 22序號(hào)0:21如果直接stem(y)而不給序號(hào)橫軸含義就丟了。連續(xù)正弦信號(hào)x_a(t)cos(5000πt)4sin(2000πt)sin(3000πt)的繪制要注意采樣間隔。t0:0.5e-6:6e-3表示 0.5 微秒步長(zhǎng)這個(gè)精度是為了讓 5000π 的高頻分量不混疊。如果步長(zhǎng)取太大畫(huà)出來(lái)的波形會(huì)失真看起來(lái)像低頻信號(hào)這是時(shí)域繪圖里最隱蔽的坑。3. 連續(xù)時(shí)間信號(hào)頻域分析傅里葉級(jí)數(shù)、頻譜與吉布斯現(xiàn)象3.1 周期矩形脈沖的頻譜變化規(guī)律實(shí)驗(yàn)二的核心是周期信號(hào)的傅里葉級(jí)數(shù)展開(kāi)和頻譜繪制。周期矩形脈沖信號(hào)的雙邊幅度譜和相位譜由sinc函數(shù)決定譜線間隔是基頻Ω?2π/T。當(dāng)T從 0.5s 增大到 1s、2s 時(shí)譜線變得更密集幅度整體下降。這個(gè)規(guī)律可以總結(jié)成一句話周期越長(zhǎng)頻譜越密幅度越小。因?yàn)橹芷谛盘?hào)的能量被分散到更多諧波上單根譜線的幅度自然降低。用 MATLAB 畫(huà)雙邊譜時(shí)要注意正負(fù)頻率都要畫(huà)幅度譜是偶對(duì)稱相位譜是奇對(duì)稱。如果只畫(huà)正頻率會(huì)漏掉一半信息相位譜的符號(hào)也容易搞反。實(shí)驗(yàn)里A1, τ0.1s, T0.5s的參數(shù)下第一零點(diǎn)在2π/τ附近這個(gè)截止頻率決定了頻譜的主瓣寬度。3.2 諧波疊加與吉布斯現(xiàn)象的定量計(jì)算周期矩形脈沖用有限項(xiàng)傅里葉級(jí)數(shù)重構(gòu)時(shí)不連續(xù)點(diǎn)附近會(huì)出現(xiàn)過(guò)沖這就是吉布斯現(xiàn)象。實(shí)驗(yàn)里N15, 25, 50的合成波形顯示N越大波形越接近矩形脈沖但過(guò)沖峰值不會(huì)消失而是趨近于一個(gè)常數(shù)。這個(gè)常數(shù)大約是跳變幅度的 8.95%。實(shí)驗(yàn)程序p2_4直接算出了最大過(guò)沖function p2_4(N) t -2:1e-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運(yùn)行結(jié)果是1.0896即過(guò)沖約 8.96%。這個(gè)數(shù)字要記住考試?yán)锍?wèn)“吉布斯現(xiàn)象會(huì)不會(huì)隨 N 增大而消失”答案是不會(huì)只會(huì)越來(lái)越靠近不連續(xù)點(diǎn)。另一個(gè)易錯(cuò)點(diǎn)是sinc函數(shù)的定義MATLAB 的sinc(x)是sin(πx)/(πx)不是sin(x)/x代入時(shí)要把π處理好否則頻譜包絡(luò)形狀會(huì)完全不對(duì)。3.3 男聲女聲頻譜差異與語(yǔ)音轉(zhuǎn)換思路實(shí)驗(yàn)二還涉及實(shí)際音頻的 FFT 分析。男聲基音頻率低能量集中在低頻波形粗糙女聲基音頻率高能量分布更均勻波形細(xì)致。在語(yǔ)音轉(zhuǎn)換中男聲轉(zhuǎn)女聲的核心操作是基頻調(diào)整同時(shí)配合聲道長(zhǎng)度模擬和諧波分布調(diào)整?;l調(diào)整可以通過(guò)重采樣或相位聲碼器實(shí)現(xiàn)聲道長(zhǎng)度調(diào)整則改變共振峰位置。這些方法在 MATLAB 里可以用resample和濾波器組近似實(shí)現(xiàn)但實(shí)驗(yàn)里只要求定性比較不要求完整轉(zhuǎn)換。4. 時(shí)域采樣與重建奈奎斯特間隔和混疊的判定方法4.1 采樣定理的驗(yàn)證邏輯實(shí)驗(yàn)三的核心是采樣定理。升余弦脈沖信號(hào)的頻譜大部分集中在[0, 2π/τ]截止頻率Ω_m2奈奎斯特間隔T_sπ/2。當(dāng)T_sπ/2時(shí)頻譜未混疊當(dāng)T_s2時(shí)頻譜發(fā)生混疊。判定混疊的方法很直接看采樣后信號(hào)的頻譜在Ω_m以外是否還有重疊。如果采樣頻率低于兩倍截止頻率高頻分量會(huì)折疊到低頻頻譜出現(xiàn)疊加。這里最容易錯(cuò)的是把采樣間隔和采樣頻率搞反。T_s越小采樣頻率越高越不容易混疊。實(shí)驗(yàn)里T_sπ/2是臨界值T_s2大于臨界值所以混疊。復(fù)習(xí)時(shí)要記住奈奎斯特頻率是2Ω_m奈奎斯特間隔是π/Ω_m兩者互為倒數(shù)關(guān)系。4.2 重建誤差的來(lái)源與低通濾波器截止頻率的影響信號(hào)重建用理想低通濾波器從采樣信號(hào)中恢復(fù)原信號(hào)。實(shí)驗(yàn) 3.4 把T_s改為 2低通截止頻率改為Ω_cΩ_m重建誤差大大增加。誤差來(lái)源有兩個(gè)一是采樣間隔增大導(dǎo)致混疊高頻分量折疊后無(wú)法通過(guò)低通濾波器分離二是低通截止頻率減小把部分有效高頻分量也濾掉了。這兩個(gè)因素疊加誤差自然變大。重建時(shí)要注意低通濾波器的截止頻率必須滿足Ω_m ≤ Ω_c ≤ Ω_s - Ω_m其中Ω_s2π/T_s。如果Ω_c取太小會(huì)丟失信號(hào)的高頻細(xì)節(jié)取太大又會(huì)引入混疊分量。實(shí)驗(yàn)里Ω_cΩ_m是下限剛好卡在邊界上所以誤差明顯。實(shí)際重建時(shí)通常取Ω_cΩ_s/2但前提是Ω_s ≥ 2Ω_m。5. 離散傅里葉變換與數(shù)字濾波器從 DFT 到系統(tǒng)頻域分析5.1 DFT 的計(jì)算要點(diǎn)與頻譜分析離散傅里葉變換把有限長(zhǎng)序列變換到頻域公式是X[k]Σx[n]W_N^{nk}其中W_Ne^{-j2π/N}。MATLAB 里用fft實(shí)現(xiàn)但要注意fft的輸出是0到N-1的頻率索引畫(huà)頻譜時(shí)要用fftshift把零頻移到中心。如果不移低頻分量會(huì)出現(xiàn)在兩端看起來(lái)像高頻這是 DFT 分析里最常見(jiàn)的視覺(jué)誤導(dǎo)。DFT 的頻率分辨率是fs/NN越大分辨率越高但計(jì)算量也越大。實(shí)驗(yàn)里通常取N1024或2048既能看清頻譜細(xì)節(jié)又不會(huì)太慢。如果信號(hào)長(zhǎng)度不夠要補(bǔ)零到N補(bǔ)零不改變頻譜形狀只改變采樣密度這一點(diǎn)經(jīng)常被誤解為“補(bǔ)零能提高分辨率”其實(shí)不能。5.2 數(shù)字濾波器設(shè)計(jì)與系統(tǒng)頻域分析數(shù)字濾波器設(shè)計(jì)是實(shí)驗(yàn)四的延伸內(nèi)容。IIR 濾波器用雙線性變換法從模擬原型映射到數(shù)字域FIR 濾波器用窗函數(shù)法直接設(shè)計(jì)單位脈沖響應(yīng)。MATLAB 里butter、cheby1、fir1分別對(duì)應(yīng)不同類型的濾波器。設(shè)計(jì)時(shí)要關(guān)注通帶截止頻率、阻帶截止頻率、通帶波紋和阻帶衰減四個(gè)參數(shù)。連續(xù)時(shí)間系統(tǒng)的頻域和復(fù)頻域分析則涉及系統(tǒng)函數(shù)H(s)和頻率響應(yīng)H(jΩ)。拉普拉斯變換把微分方程變成代數(shù)方程傅里葉變換是拉普拉斯變換在虛軸上的特例。復(fù)習(xí)時(shí)要能把H(s)的零極點(diǎn)分布和頻率響應(yīng)的形狀對(duì)應(yīng)起來(lái)極點(diǎn)靠近虛軸諧振峰越尖銳零點(diǎn)靠近虛軸幅度響應(yīng)出現(xiàn)凹陷。6. 易漏點(diǎn)與易錯(cuò)點(diǎn)采樣、卷積、頻譜分析里最容易翻車的地方6.1 易漏點(diǎn)一離散序列的序號(hào)向量為什么漏很多人只關(guān)注序列值忘了序號(hào)n也是信號(hào)的一部分。stem(n,x)里n和x必須等長(zhǎng)且n的起始值決定信號(hào)的絕對(duì)位置。怎么補(bǔ)每次畫(huà)圖前先檢查length(n)length(x)移位操作后重新生成n不要復(fù)用舊的序號(hào)向量。6.2 易漏點(diǎn)二卷積結(jié)果的序號(hào)范圍為什么漏conv(x,h)只返回?cái)?shù)值不返回序號(hào)。如果直接stem(y)橫軸默認(rèn)從 1 開(kāi)始和實(shí)際序號(hào)對(duì)不上。怎么補(bǔ)卷積后手動(dòng)生成序號(hào)n0:length(y)-1如果原序列有負(fù)序號(hào)還要做相應(yīng)平移。6.3 易漏點(diǎn)三采樣定理的臨界條件為什么漏把T_s和f_s混用或者把奈奎斯特頻率記成Ω_m而不是2Ω_m。怎么補(bǔ)記住f_s ≥ 2f_mT_s ≤ 1/(2f_m)。實(shí)驗(yàn)里Ω_m2所以T_s ≤ π/2T_sπ/2是臨界T_s2超了。6.4 易漏點(diǎn)四FFT 頻譜的橫軸映射為什么漏fft輸出索引0:N-1對(duì)應(yīng)的頻率是0:fs/N:fs-fs/N不是0:fs。如果不做fftshift零頻在第一個(gè)點(diǎn)正負(fù)頻率分居兩端。怎么補(bǔ)畫(huà)頻譜時(shí)用f(0:N-1)*fs/N再用fftshift把零頻移到中心橫軸改成(-N/2:N/2-1)*fs/N。6.5 易漏點(diǎn)五吉布斯過(guò)沖的定量值為什么漏以為N增大過(guò)沖會(huì)消失或者記不住 8.95% 這個(gè)數(shù)。怎么補(bǔ)記住過(guò)沖峰值約為跳變幅度的 1.0895 倍即 8.95%。實(shí)驗(yàn)程序p2_4可以直接算出這個(gè)值復(fù)習(xí)時(shí)跑一遍加深印象。7. 復(fù)習(xí)清單從實(shí)驗(yàn)報(bào)告到考點(diǎn)的查漏補(bǔ)缺方法復(fù)習(xí)信號(hào)分析與處理最有效的方式不是重讀教材而是把四個(gè)實(shí)驗(yàn)的 MATLAB 代碼重新跑一遍每跑一個(gè)就問(wèn)自己三個(gè)問(wèn)題這個(gè)操作對(duì)應(yīng)哪個(gè)理論公式參數(shù)改了會(huì)怎樣如果結(jié)果不對(duì)最可能錯(cuò)在哪下面這份清單按模塊整理可以直接對(duì)照查漏。模塊核心公式/操作易錯(cuò)點(diǎn)自檢方法信號(hào)產(chǎn)生stemvsplotzeros/ones拼接序號(hào)向量長(zhǎng)度不匹配檢查length(n)length(x)序列運(yùn)算fliplrconv奇偶分解翻轉(zhuǎn)后序號(hào)錯(cuò)位卷積序號(hào)從 0 開(kāi)始畫(huà)圖前手動(dòng)生成序號(hào)傅里葉級(jí)數(shù)sinc函數(shù)雙邊譜sinc定義含 π相位譜符號(hào)正負(fù)頻率都畫(huà)檢查對(duì)稱性吉布斯現(xiàn)象有限項(xiàng)重構(gòu)過(guò)沖 8.95%以為 N 增大過(guò)沖消失跑p2_4看max(f_N)采樣定理T_s ≤ π/Ω_m混疊判定T_s和f_s混用算2Ω_m和π/Ω_m信號(hào)重建低通濾波截止頻率Ω_c取太小丟高頻檢查Ω_m ≤ Ω_c ≤ Ω_s-Ω_mDFTfftfftshift橫軸頻率映射錯(cuò)誤用f(0:N-1)*fs/N濾波器設(shè)計(jì)butterfir1通帶阻帶參數(shù)混淆畫(huà)幅頻響應(yīng)驗(yàn)證復(fù)習(xí)時(shí)建議按這個(gè)順序走先跑實(shí)驗(yàn)一確認(rèn)能造出所有基本信號(hào)再跑實(shí)驗(yàn)二把周期矩形脈沖的頻譜和吉布斯現(xiàn)象過(guò)一遍然后跑實(shí)驗(yàn)三改T_s看混疊最后跑實(shí)驗(yàn)四用fft分析一段音頻再用butter設(shè)計(jì)一個(gè)低通濾波器濾掉高頻。每步都記錄參數(shù)和結(jié)果形成自己的參數(shù)筆記。我自己的習(xí)慣是每次改參數(shù)前先寫(xiě)下預(yù)期結(jié)果跑完對(duì)比。如果和預(yù)期不符先檢查序號(hào)向量和頻率軸再檢查公式里的 π 和 2π。從那以后我每次做采樣實(shí)驗(yàn)都強(qiáng)制走一遍T_s ≤ π/Ω_m的判斷再也沒(méi)在混疊判定上翻過(guò)車。希望這份梳理幫到你。本文還有配套的精品資源點(diǎn)擊獲取