第一篇:數字信號處理知識總結課案(模版)
1.傅里葉變換
x(n)的一個周期; 有限長序列
x(n)
可看成周期序列
~
x(n)看成x把 ~(n)的以N為周期的周期延拓。有限長序列的離散傅里葉變換(DFT):
N?1?nk ?X(k)?DFT[x(n)]??x(n)WNx(n)?x((n))N?~?n?0 ??~1N?1?nk?x(n)?x(n)RN(n)?x((n))NRN(n)x(n)?IDFT[X(k)]?X(k)W ??N?Nk?0?
① 長度為N的有限長序列 x(n),其離散傅里葉變換 X(k)仍是一個長度為N 的有限長序列;
② x(n)與X(k)是一個有限長序列離散傅里葉變換對,已知x(n)就能唯一地確定 X(k);同樣已知X(k)也就唯一地確定x(n)。實際上x(n)與 X(k)都是長度為 N 的序列(復序列)都有N個獨立值,因而具有等量的信息; ③ 有限長序列隱含著周期性。
2.循環卷積(有可能會讓畫出卷積過程或結果)
循環卷積過程為:
最后結果為:
3.(見課本)
課本
3、線性卷積(有可能會讓畫出卷積過程或結果)
以下為PPT上的相關題目:
4.計算分段卷積:重疊相加法和重疊保留法(一定會考一種)
重疊相加法解題基本步驟:
將長序列均勻分段,每段長度為M;
基于DFT快速卷積法,通過循環卷積求每一段的線性卷積;
依次將相鄰兩段的卷積的N-1個重疊點相加,得到最終的卷積結果。
4.級聯、并聯、直接形(畫圖)以下為課后作業相關題目:
1.已知系統用下面差分方程描述: 311y(n)=y(n?1)-y(n?2)+x(n)?x(n?1)483
試分別畫出系統的直接型、級聯型和并聯型結構。式中x(n)和y(n)分別表示系統的輸入和輸出信號。
解: 將原式移項得
311y(n)?y(n?1)?y(n?2)?x(n)?x(n?1)483
將上式進行Z變換,得到
311?1?2?1Y(z)?Y(z)z?Y(z)z?X(z)?X(z)z483
11?z?13H(z)?311?z?1?z?248(1)按照系統函數
H(z),根據Masson公式,畫出直接型結構如題1解圖
(一)所示。1?z?11(2)將H(z)的分母進行因式分解:
H(z)? ? 3111?z?11?z?1
241?11?z按照上式可以有兩種級聯型結構: 13H(z)? ? 111?z?11?z?1 241畫出級聯型結構如題1解圖
(二)(a)所示 1?z?11 H(z)? ? 3111?z?11?z?1
24畫出級聯型結構如題1解圖
(二)(b)所示
111?z?11?z?133H(z)??3?11?21?11?11?z?z(1?z)(1?z)4824
(3)
將H(z)進行部分分式展開:
1z?H(z)AB3???H(z)?11111?11?1z(z?)(z?)z?z?(1?z)(1?z)2424 2411?z?***zz?H(z)33?3???3?3H(z)?3111?11?111z(z?)z?1?z1?zz?z?24242410
根據上式畫出并聯型結構如題1解圖
(三)所示。
3.設系統的差分方程為
y(n)=(a+b)y(n-1)-aby(n-2)+x(n-2)+(a+b)x(n-1)+ab 式中, |a|<1,|b|<1,x(n)和y(n)分別表示系統的輸入和輸出信號, 試畫出系統的直接型和級聯型結構。
解:
(1)直接型結構。將差分方程進行Z變換,得到
Y(z)=(a+b)Y(z)z-1-abY(z)z-2+X(z)z-2-(a+b)X(z)z-1+ab Y(z)ab?(a?b)z?zH(z)??X(z)1?(a?b)z?1?abz?2按照Masson公式畫出直接型結構如題3解圖
(一)所示。
?1?2
(2)級聯型結構。將H(z)的分子和分母進行因式分解,得到
(a?z?1)(b?z?1)H(z)??H1(z)H2(z)?1?1(1?az)(1?bz)
按照上式可以有兩種級聯型結構:①
z?1?aH1(z)?1?az?1畫出級聯型結構如題3解圖
(二)(a)所示
z?1?bH2(z)?1?bz?1?1
z?aH1(z)??11?bz畫出級聯型結構如題3解圖
(二)(b)所示 ?1z?bH2(z)??11?az
四.設計模擬濾波器(考試時不能編代碼)一般步驟:
根據Ap、As、Ωs、Ωp,確定濾波器階次N和截止頻率Ωc。
P161 【例6.2.2】
設計一個模擬低通巴特沃斯濾波器,指標如下:
(1)通帶截止頻率:Ωp=0.2π;通帶最大衰減:Ap=7 dB。
(2)阻帶截止頻率:Ωs=0.3π;阻帶最小衰減:As=16dB。解: ?lg[(100.7?1)/(101.6?1)]? N?????2.79??32lg(0.2?/0.3?)??
由Ωp,得:
0.2?
Qc??0.49850.76 10?1由Ωs,得:
0.3?Q??0.5122 c1.6610?1
在上面兩個Ωc之間選Ωc=0.5。
最后可得(級聯型):
0.125Ha(s)?
(s?0.5)(s2?0.5s?0.25)
五、脈沖響應不變法(P177 第6.3節)156-158頁
脈沖響應不變法的優點:
? 時域逼近。使數字濾波器的單位脈沖響應完全模仿模擬濾波器的單位沖激響應,即時域逼近良好。? 線性頻率關系。
模擬頻率Ω和數字頻率ω之間呈線性關系ω=ΩT。脈沖響應不變法的缺點: ? 混疊失真效應
因此,只適用于限帶的模擬濾波器(例如衰減特性很好的低通或帶通濾波器),而且高頻衰減越快,混疊效應越小;而對于高通和帶阻濾波器,由于它們在高頻部分不衰減,因此會產生混疊現象。
六、雙線性變換法
七,與實驗相關
本題中老師會給出類似于下列表達式的信號:
S(t)?2?3cos(2?50?t?30?/180)?1.5cos(2?75?t?90?/180)
要求用脈沖相應不變法或雙線性法編寫主要的代碼(如下面代碼)來達到濾除其中的部分信號,并畫出你所設計的濾波器的頻響曲線,并標明Ωs、Ωp,以及濾波后信號的時域波形(波形中要體現相位特征)。1)脈沖響應不變法濾除第三個信號: Fs=256;
% 采樣頻率 fp=60;
% 通帶截止頻率 fs=70;
% 阻帶截止頻率 Rp=1;
Rs=25;Wp=(fp/Fs)*2*pi;
%臨界頻率采用角頻率表示 Ws=(fs/Fs)*2*pi;
%臨界頻率采用角頻率表示 OmegaP=Wp*Fs;OmegaS=Ws*Fs;[n,Wc]=buttord(OmegaP,OmegaS,Rp,Rs,'s');[b,a]=butter(n,Wc,'s');[Bz,Az]=impinvar(b,a,Fs);
2)雙線性法濾除第三個信號: Fs=256;
% 采樣頻率 fp=60;
% 通帶截止頻率 fs=70;
% 阻帶截止頻率 Rp=1;
Rs=25;Wp=(fp/Fs)*2*pi;
% 臨界頻率采用角頻率表示 Ws=(fs/Fs)*2*pi;
% 臨界頻率采用角頻率表示 OmegaP=2*Fs*tan(Wp/2);
% 頻率預畸 OmegaS=2*Fs*tan(Ws/2);[n,Wc]=buttord(OmegaP,OmegaS,Rp,Rs,'s');[b,a]=butter(n,Wc,'s');
[Bz,Az]=bilinear(b,a,Fs);注:要好好看實驗中關于低通,高通,帶通,帶阻的設計代碼。
帶通:
fp1=40;
% 通帶截止頻率 fs1=30;
% 阻帶截止頻率 fp2=60;
% 通帶截止頻率 fs2=70;
% 阻帶截止頻率 Rp=1;
Rs=25;Wp1=(fp1/Fs)*2*pi;Ws1=(fs1/Fs)*2*pi;Wp2=(fp2/Fs)*2*pi;Ws2=(fs2/Fs)*2*pi;Wp=[Wp1,Wp2];
% 向量 Ws=[Ws1,Ws2];
% 向量
帶阻:
fp1=30;
% 通帶截止頻率 fs1=40;
% 阻帶截止頻率 fp2=70;
% 通帶截止頻率 fs2=60;
% 阻帶截止頻率 Rp=1;
Rs=25;Wp1=(fp1/Fs)*2*pi;Ws1=(fs1/Fs)*2*pi;Wp2=(fp2/Fs)*2*pi;Ws2=(fs2/Fs)*2*pi;Wp=[Wp1,Wp2];Ws=[Ws1,Ws2];若S(??5t)?信號表達
i(n?2
式為
t2??70???3c?to?st?s?則相關代碼為:
1)低通濾波器代碼
fp=110;% 通帶截止頻率 fs=130;% 阻帶截止頻率
Rp=1;Rs=25;Wp=(fp/Fs)*2*pi;Ws=(fs/Fs)*2*pi;%臨界頻率采用角頻率表示
(1):脈沖響應不變法
OmegaP=Wp*Fs;OmegaS=Ws*Fs;[n,Wc]=buttord(OmegaP,OmegaS,Rp,Rs,'s');[b,a]=butter(n,Wc,'s');% 指明為高通濾波器 [Bz,Az]=impinvar(b,a,Fs);
(2)雙線性變換法
OmegaP=2*Fs*tan(Wp/2);OmegaS=2*Fs*tan(Ws/2);% 頻率預畸 [n,Wc]=buttord(OmegaP,OmegaS,Rp,Rs,'s');[b,a]=butter(n,Wc,'s');[Bz,Az]=bilinear(b,a,Fs);
2)高通濾波器
fp=280;% 通帶截止頻率 fs=260;% 阻帶截止頻率 Rp=1;Rs=25;Wp=(fp/Fs)*2*pi;%臨界頻率采用角頻率表示 Ws=(fs/Fs)*2*pi;%臨界頻率采用角頻率表示(2):雙線性變換法
OmegaP=2*Fs*tan(Wp/2);% 頻率預畸 OmegaS=2*Fs*tan(Ws/2);[n,Wc]=buttord(OmegaP,OmegaS,Rp,Rs,'s');[b,a]=butter(2*n,Wc,'high','s');[Bz, Az]=bilinear(b,a,Fs);3)帶通濾波器
fp1=130;% 通帶截止頻率 fs1=110;% 阻帶截止頻率 fp2=255;% 通帶截止頻率 fs2=265;% 阻帶截止頻率 Rp=1;Rs=25;Wp1=(fp1/Fs)*2*pi;Ws1=(fs1/Fs)*2*pi;Wp2=(fp2/Fs)*2*pi;Ws2=(fs2/Fs)*2*pi;Wp=[Wp1,Wp2];Ws=[Ws1,Ws2];(2):雙線性變換法
OmegaP=2*Fs*tan(Wp/2);% 頻率預畸 OmegaS=2*Fs*tan(Ws/2);[n,Wc]=buttord(OmegaP,OmegaS,Rp,Rs,'s');[b,a]=butter(2*n,Wc,'s');[Bz,Az]=bilinear(b,a,Fs);4)帶阻濾波器的代碼如下:
fp1=110;% 通帶截止頻率 fs1=240;% 阻帶截止頻率 fp2=265;% 通帶截止頻率 fs2=255;% 阻帶截止頻率 Rp=1;Rs=25;Wp1=(fp1/Fs)*2*pi;Ws1=(fs1/Fs)*2*pi;Wp2=(fp2/Fs)*2*pi;Ws2=(fs2/Fs)*2*pi;
Wp=[Wp1,Wp2];Ws=[Ws1,Ws2];(2):雙線性變換法
OmegaP=2*Fs*tan(Wp/2);% 頻率預畸 OmegaS=2*Fs*tan(Ws/2);[n,Wc]=buttord(OmegaP,OmegaS,Rp,Rs,'s');[b,a]=butter(2*n,Wc,'stop','s');[Bz,Az]=bilinear(b,a,Fs);
第二篇:數字信號處理課設
信息科學與工程學院
數字信號處理課程設計實驗報告
課題名稱: 簡單信號濾波演示系統 學生姓名: 學 號: 專業班級: 指導老師: 實驗時間: 2014.10.8
目 錄
第一章
概述.................................3
第二章
第三章
第四章第五章第六章
1.1 FIR、IIR概述.................................3 1.2題目要求......................................3 設計分析.............................5 2.1算法分析......................................5 2.2 在matlab中實現的分析........................6
程序實現.......................8 3.1 程序主體介紹..................................8 3.2 子程序........................................9 3.3 程序調試及運行結果............................9 3.4 結果分析及問題分析...........................16 心得體會............................17 參考文獻............................18 源代碼..............................19
MATLAB
第一章 概述
1.1 FIR、IIR概述
數字濾波器是指輸入輸出均為數字信號,通過一定的運算關系改變輸入信號所含頻率成分的相對比例或者濾除某些頻率成分的器件。數字濾波器與模擬濾波器相比數字濾波器具有精度高、穩定、體積小、重量小、靈活等特點。主要分為兩種:有限脈沖響應FIR和無限脈沖響應IIR。設計濾波器的主要要求有兩種,一是幅頻特性,一是相頻特性。一般的濾波器主要是對幅頻特性作出要求,如果對輸出相頻特性也有要求,就需要用到線性相位濾波器。IIR濾波器的設計主要有兩類,一是借助于模擬濾波器設計進行,二是直接在頻域或時域中進行設計。FIR濾波器的設計不能借助于模擬濾波器,也有兩類設計方法,一是窗函數法,二是頻率采樣法。還有一種比較有效的方法是切比雪夫等波紋逼近法,需通過計算機輔助進行。
1.2題目要求
設計一個工作流程如圖所示的信號濾波演示系統:
圖2 濾波演示圖
⑴ 信號發生器—根據信號選擇分為兩大類:
① 靜態型:直接輸入(或從文件讀取)測試信號序列;
② 動態型:輸入由多個不同頻率正弦信號疊加組合而成的模擬信號公式 100sin(2?f1t)?100sin(2?f2t)?...?100sin(2?fnt)采樣頻率(Hz)以及采樣點數,動態生成該信號的采樣序列,作為測試信號。
⑵ 頻譜分析—使用FFT 對產生的測試信號進行頻譜分析并展示其幅頻、相頻特
性,指定需要濾除或保留的頻帶,通過選擇濾波器類型(IIR/FIR),確定對
應的濾波器(低通、高通、帶通、帶阻)技術指標。
⑶ 濾波器設計—根據IIR/FIR 數字濾波器技術指標設計濾波器,生成相應的濾
波器系數,并展示對應的濾波器幅頻(衰減)、相頻特性。
① IIR DF 設計:使用雙線性變換法,可選擇濾波器基型(巴特沃斯或切比雪夫型);
② FIR DF 設計:使用窗口法,可選擇窗口類型。
⑷ 數字濾波—根據設計的濾波器系數,對測試信號進行濾波。
① IIR DF:要求通過差分方程迭代實現濾波,未知初值置零處理; ② FIR DF:要求通過快速卷積實現濾波。可以選擇使用重疊相加或重疊保留法進行卷積運算,并動態展示卷積運算的詳細過程。
⑸ 輸出信號分析—展示濾波后信號的幅頻與相頻特性,分析是否滿足濾波要求。
對同一濾波要求,根據輸出信號頻譜,對比分析各類濾波器的差異。選做部分
將一段語音作為測試信號,通過頻譜展示和語音播放,對比分析濾波前后語音信號的變化,進一步加深對數字信號處理的理解。
第二章 設計分析
2.1算法分析
此題目的實現可分為三個某塊的設計實現:輸入信號模塊,設計濾波器模塊,濾波模塊。
首先明確各模塊間的數據依賴關系:在輸入信號模塊得到信號后,對信號
進行頻域分析,從而確定濾波器的相關技術指標,根據濾波器的技術指標與類型,在濾波器設計模塊完成濾波器的設計,然后將濾波器的設計結果傳遞給濾波模塊,濾波模塊同時接收輸入信號,從而通過運算,實現信號的濾波處理。從數據傳遞關系上分析,濾波模塊的實現依賴于其他模塊的數據輸出,因此放在最后設計。先設計輸入模塊。
因為此設計相對復雜,分模塊設計,通過參數傳遞和接口實現分模塊設計即檢驗,提高程序的穩定性與健壯性。
輸入的實現可以有兩種方式:靜態輸入和動態輸入。靜態輸入選擇從文本輸入數據,將信號取樣值以矩陣的形式存放在文本中。采用文件的讀取就可以實現,比較容易。動態輸入,即輸入由一系列頻率的正弦信號相加的組成的信號,需要經過采樣的,注意在設置采樣頻率時一定要符合奈奎斯特準則,提高采樣點數,增加頻譜分辨率。最后輸出一采樣信號向量,傳遞給其余兩模塊。
濾波器的設計,通過輸入信號的頻譜分析,設置濾波器的參數,然后才可以設計濾波器。第一步需要總結設計濾波器需要哪些參數,通過學習可以總結,所有濾波器的參數有四個:通帶截止頻率、阻帶截止頻率、通帶最大衰減、阻帶最小衰減。
對濾波器的設計分兩類:FIR和IIR,二則所需的函數及設計方法不同。IIR采用借助于模擬濾波器的方式,包括巴特沃斯濾波器和切比雪夫濾波器兩種類型。FIR采用窗函數方式,有矩形窗、三角窗、漢明窗、漢寧窗、布萊克曼和凱塞窗。通過調用不同的函數來實現濾波器的設計。特別在實現窗函數濾波器時,各個函數的主要區別是不同的頻率采樣,可以通過選擇結構實現,簡化程序。通過濾波器的設計最后可以得到濾波器的系統函數H(z)的系數。分析濾波器的幅頻特性和相頻特性,如果不符合要求重新設定濾波器參數或者換成其他濾波器類型。如果性能符合要求,則將系數傳遞給濾波模塊。濾波模塊不調用濾波函數,實現濾波功能根據濾波器類型的不同,有兩種方式可以選擇,一種是通過差分方程運算,一種是通過線性卷積運算。前者適合對IIR濾波器進行濾波,后者適合對FIR濾波器進行濾波。且線性卷積為實現對長序列的卷積運算,采用重疊相加法,采用動態變化展示運算過程。
2.2 在matlab中實現的分析
輸入模塊通過讀取文件和直接輸入數據運算可以很容易實現。在輸入信號確定后,要對其進行頻譜分析,從而確定濾波器的參數和類型(低通、高通、帶通、帶阻),此模塊作用也就完成,將數據分別用全局變量傳遞給下面的模塊。
設置模擬信號:
我采用的測試信號是兩個正弦信號疊加而成的信號,信號為
y=sin(2*pi*f1*n*Ts)+sin(2*pi*f2*n*Ts)其中頻率f1=30;頻率f2=50;頻率f3=200;采樣頻率fs=3000;采樣間隔 Ts=1/fs;采樣點數
N=1024;n=1:N 采集模擬信號的程序代碼: f1=30;% 頻率1
f2=50;% 頻率2 f3=200;% 頻率3
fs=3000;% 采樣頻率
Ts=1/fs;% 采樣間隔
N=1024;% 采樣點數
n=1:N;
y=sin(2*pi*f1*n*Ts)+sin(2*pi*f2*n*Ts)+sin(2*pi*f1*n*Ts);% 正弦波混合
頻譜分析:
使用FFT對產生的測試信號進行頻譜分析并展示其幅頻特性與相頻特性,指定需要濾除的頻帶,通過選擇濾波器類型IIR,確定對應的濾波器(低通、高通)技術指標Fp、Fc、Rp、Rs。
濾波器的設計:
根據以上技術指標(通帶截止頻率、通帶最大衰減、阻帶截止頻率、阻帶最
小衰減),設計數字濾波器,生成相應的濾波器系數,并畫出對應的濾波器
幅頻特性與相頻特性。分別設計巴特沃斯濾波器、切比雪夫I型濾波器、切
比雪夫II型濾波器、橢圓濾波器、yulewalk濾波器。
巴特沃斯和切比雪夫的濾波函數調用為:
[N,Wc]=buttord(wp,ws,rp,rs);[N,Wc]=cheb1ord(wp,ws,rp,rs);[B,A]=butter(N,Wc,’property’);[B,A]=cheby1(N,rp,Wc,’property’);
property對于低通和高通為’’,帶通’high’,帶阻’stop’;窗函數濾波器設計的調用函數:
求窗函數的階數:
N=ceil((h*pi)/wdel);%wdel為窗函數的過渡帶寬,h對應不同窗函數的值 wn=boxcar(N+1);wn=triang(N+1);wn=hanning(N+1);wn=hamming(N+1);wn=blackman(N+1);wn=kaiser(N+1,beta);%bata為kaiser的a參數 B=fir1(N,ws,'property',wn);property對于低通和高通為’’,帶通’high’,帶阻’stop’;
數字濾波:
根據設計的濾波器系數,對測試信號通過差分方程迭代實現濾波數字濾波,展示濾波后信號的幅頻特性與相頻特性,分析是否滿足濾波要求(對同一濾波要求,對比分析各類濾波器的差異)。
需要注意的是,窗函數對濾波參數的使用,需要通過運算得到一窗函數階數,對通帶最大衰減無使用。需要注意FIR和IIR對參數的不同利用。
濾波模塊:運用差分方程運算的濾波函數,可以用循環調用簡單實現。動態展示線性卷積的重疊相加法可以用流程圖來說明: 第三章 MATLAB程序實現
3.1 程序主體介紹
此程序界面也是采用GUI,不過是采用圖形用戶界面開發環境。和第一個對比,布局更加容易,很容易調整界面。但是在一些函數操作行會受一些限制,比如函數參數的傳遞,目前來說還是采用全局變量才能完成。
pushbutton1_Callback(hObject, eventdata, handles)%獲得輸入信號
uipanel11_SelectionChangeFcn(hObject, eventdata, handles)%獲取濾波器的設計參數
uipanel15_SelectionChangeFcn(hObject, eventdata, handles)%設計濾波器
pushbutton4_Callback(hObject, eventdata, handles)%進行濾波
以上是一些功能控件,需要注意的是他們的view ballcak屬性,對于groupbutton一組按鈕,需要選用SelectionChangeFcn,其余選擇callback屬性即可。另外,handles函數作用為傳遞的句柄,是一結構體,調用時注意此處。其余和直接用函數創建GUI界面無太大區別。
3.2 子程序
3.2.1
IIR濾波器
FIR濾波器
巴特沃斯濾波器
3.2.2
矩形窗
三角窗
漢寧窗
哈明窗 3.3 程序調試及運行結果
原始信號幅頻特性及相頻特性
巴特沃斯的幅頻特性及相頻特性
信號濾波后的幅頻特性及相頻特性
矩形窗的幅頻特性及相頻特性
信號濾波后的幅頻特性及相頻特性
三角窗的幅頻特性及相頻特性
信號濾波后的幅頻特性及相頻特性
漢寧窗的幅頻特性及相頻特性
信號濾波后的幅頻特性及相頻特性
哈明窗的幅頻特性及相頻特性
信號濾波后的幅頻特性及相頻特性
3.4 結果分析及問題分析
用雙線性變換法設計無限脈沖響應數字濾波器(IIF DF)時,先把數字濾波器指標轉換成模擬濾波器的指標,然后根據模擬濾波器的指標設計模擬濾波器,再經過線性變換把模擬濾波器轉換成數字濾波器。該系統要能夠設計巴特沃茲型低通、帶通、高通濾波器,并能夠輸入數字濾波器的性能指標,顯示出濾波器的階數和系數。該系統的關鍵部分是濾波器的設計部分,按照雙線性變換法設計濾波器的步驟進行設計即可。
第四章 心得體會
本次課程設計可以稱為matlab和數字信號處理的綜合設計,因為這次有一半的時間在研究matlab,有一半的時間在思考數字信號問題的解決。幾天下來收獲是很多的,對數字信號處理有了一次全面的回顧,而且也看到了matlab的神秘面容。只要是自己真正的努力去做了,就絕對不會后悔在課程設計上花費的時間。現在發現自己確實會的太少,而這次又學了太多,對自己以后的學習還是有鞭策意義的。
這次課程設計也使我認識到了matlab的強大,或者進一步說工具軟件有著你意想不到的功效,能節省你的時間,同時又能夠讓你從實踐上更深層次的認識到所學知識的奇妙,而且可以同時明白了學習與實踐的相輔相成。對課程設計也是一直保持很高興趣的,雖然有時為它焦頭爛額,但是也會因此有柳暗花明的喜悅,任何事情都折射著一個普通的道理——付出才有回報。淺顯的道理,卻是需要我們用毅力來堅持見證的。
具體來說,通過本次課程設計,我掌握了MATLAB的基本運用,尤其是其中GUI可視化圖形用戶界面的設計,包括函數調用與在圖形用戶界面開發環境下的調用。函數的調用與參數的傳遞是兩個簡單卻很容易出錯的地方,自由細心才可以保證程序的健壯性。
對數字信號本身內容的理解來說,全書的內容確實是可以融合在這兩個課程設計題目中的,一個是DFT運用,另一個是濾波器的設計和利用。對全書的內容可以做出最好的概括。其中濾波器的設計中,調用了許多濾波函數,這是本次實驗有點欠缺的地方,但是仍然從整體上把握了整個濾波器的設計過程。
對于課程設計中出現的問題,解決的方式有兩種,一是自己解決??梢陨暇W,查閱圖書和matlab的本身的幫助文件,不斷嘗試,自己修改錯誤,可以更好的反省。二是與同學相商。一加一不是等于二那么簡單的,相互交流才是進步的最好方式。其中解決問題最重要的應該是堅持不懈,在遇到問題時,不放棄才有可能稱為最后的勝利者。
每次課程設計都收獲頗多,而且每次都對自己的學習態度做一次調整,這個的作用確實是很大的,希望以后更加珍惜的課程設計的時間。
第五章 參考文獻
[1] 丁玉美等.數字信號處理 [M].西安:西安電子科技大學出版社,2002
[2] 程佩青.數字信號處理教程,第二版[M].北京:清華大學出版社,2001
[3] 趙樹杰等.數字信號處理[M].西安:西安電子科技大學出版社,1997
[4] 陳懷琛等.MATLAB 及在電子信息課程中的應用[M],北京:電子工業出版社出
版,2002
[5] 余成波.數字信號處理及MATLAB實現,第一版[M].北京:清華大學出版社,2008
[6] S.K.Mitra.Digital Signal Processing: A Computer Based Approach, 3rdEdition[M],New York, USA:McGraw-Hill,2000
[7] R.G.Lyons.Understanding Digital Signal Processing,2nd Edition[M].New Jersey, USA:Prentice Hall,2005
第六章 源代碼
function varargout = df(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename,...'gui_Singleton', gui_Singleton,...'gui_OpeningFcn', @df_OpeningFcn,...'gui_OutputFcn', @df_OutputFcn,...'gui_LayoutFcn', [] ,...'gui_Callback', []);if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});else
gui_mainfcn(gui_State, varargin{:});end
function df_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
function varargout = df_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
function edit1_Callback(hObject, eventdata, handles)
function edit1_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,'BackgroundColor','white');else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));end
function edit2_Callback(hObject, eventdata, handles)
function edit2_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,'BackgroundColor','white');else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));end
function edit3_Callback(hObject, eventdata, handles)
function edit3_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,'BackgroundColor','white');else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));end
function edit4_Callback(hObject, eventdata, handles)
function edit4_CreateFcn(hObject, eventdata, handles)if ispc
set(hObject,'BackgroundColor','white');else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));end
function edit5_Callback(hObject, eventdata, handles)
function edit5_CreateFcn(hObject, eventdata, handles)if ispc
set(hObject,'BackgroundColor','white');else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));end
function pushbutton1_Callback(hObject, eventdata, handles)f=zeros(1,4);
f(1)=str2num(get(handles.edit2,'String'));f(2)=str2num(get(handles.edit1,'String'));f(3)=str2num(get(handles.edit3,'String'));f(4)=str2num(get(handles.edit4,'String'));
T=str2num(get(handles.edit12,'String'));%采樣周期% fre=str2num(get(handles.edit5,'String'));%采樣頻率% t=0:1/fre:T;
xn=10*sin(2*pi*t*f(1))+10*sin(2*pi*t*f(2))+10*sin(2*pi*t*f(3))+10*sin(2*pi*t*f(4));
set(handles.axes15,'userdata',xn);%將Xn放在用戶數據userdata% yn3=abs(fft(xn));%快速傅立葉變換(符頻特性)% n1=[0:length(yn3)-1]/length(yn3)*fre;%橫坐標% axes(handles.axes12);%坐標系編號% stem(n1,yn3,'.');
axis([0,fre/2,0,max(yn3)]);%坐標軸單位控制% title('信號的幅頻特性');xlabel('頻率(Hz)');ylabel('|X(ejw)|');
yn4=angle(fft(xn));%相頻特性%
n4=[0:length(yn4)-1]/length(yn4)*fre;axes(handles.axes16);stem(n4,yn4,'.');
axis([0,fre/2,min(yn4),max(yn4)]);title('信號的相頻特性');xlabel('頻率(Hz)');ylabel('相位');
function edit6_Callback(hObject, eventdata, handles)
function edit6_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,'BackgroundColor','white');else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));end
function edit7_Callback(hObject, eventdata, handles)
function edit7_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,'BackgroundColor','white');else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));end
function edit8_Callback(hObject, eventdata, handles)
function edit8_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,'BackgroundColor','white');else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));end
function edit9_Callback(hObject, eventdata, handles)
function edit9_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,'BackgroundColor','white');else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));end
function pushbutton2_Callback(hObject, eventdata, handles)xn=get(handles.axes15,'userdata');fre=str2num(get(handles.edit5,'String'));
fp=str2num(get(handles.edit6,'String'));%通帶最大頻率 % fs=str2num(get(handles.edit7,'String'));%阻帶最小頻率% rp=str2num(get(handles.edit8,'String'));rs=str2num(get(handles.edit9,'String'));wp=2*fp/fre;ws=2*fs/fre;
[N,wc]=buttord(wp,ws,rp,rs,'s');%求階數,截止頻率%
[B,A]=butter(N,wc,'s');%巴特沃茲模擬低通濾波器系數%
[Bz,Az]=bilinear(B,A,1);
[H,w]=freqz(Bz,Az);%分析數字濾波器% axes(handles.axes14);plot(w/pi,abs(H));
axis([0,1,0,max(abs(H))]);title('巴特沃茲的幅頻特性');xlabel('w/π');
ylabel('|X(ejw)|');axes(handles.axes17);plot(w/pi,angle(H));title('巴特沃茲的相頻特性');xlabel('頻率(Hz)');ylabel('相位');
yn2=filter(Bz,Az,xn);%迭代法求解濾波信號% yn=abs(fft(yn2));
n1=[0:length(yn)-1]/length(yn)*fre;axes(handles.axes15);stem(n1,yn,'.');
title('信號濾波后的幅頻特性');xlabel('頻率(Hz)');ylabel('|X(ejw)|');axis([0,fre/2,0,max(yn)]);yn=angle(fft(yn2));
n1=[0:length(yn)-1]/length(yn)*fre;axes(handles.axes18);stem(n1,yn,'.');
title('信號濾波后的相頻特性');xlabel('頻率(Hz)');
ylabel('相位');
axis([0,fre/2,min(yn),max(yn)]);
pushbutton1_Callback(hObject, eventdata, handles);
function edit10_Callback(hObject, eventdata, handles)function edit10_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,'BackgroundColor','white');else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));end
function edit11_Callback(hObject, eventdata, handles)
function edit11_CreateFcn(hObject, eventdata, handles)if ispc
set(hObject,'BackgroundColor','white');else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));end
function pushbutton5_Callback(hObject, eventdata, handles)
xn=get(handles.axes15,'userdata');fp=str2num(get(handles.edit10,'String'));fs=str2num(get(handles.edit11,'String'));fre=str2num(get(handles.edit5,'String'));wp=2*fp/fre*pi;ws=2*fs/fre*pi;
Bt=ws-wp;
N0=ceil(1.8*pi/Bt);N=N0+mod(N0+1,2);wc=(wp+ws)/2/pi;
hn=fir1(N-1,wc,boxcar(N));%單位序列相應%
yn=abs(fft(hn));yn=20*log10(yn);
n1=[0:length(yn)-1]/length(yn)*2;axes(handles.axes14);plot(n1,yn);
title('矩形窗的損耗函數');xlabel('w/π');
ylabel('20log|Hg(w)|');axis([0,1,min(yn),max(yn)]);axes(handles.axes17);yn=angle(hn);
n1=[0:length(yn)-1]/length(yn)*2;plot(n1,yn);
title('矩形窗的相頻特性');xlabel('w/π');
ylabel('相位');
axis([0,1,min(yn),max(yn)]);
yn2=fftfilt(hn,xn,512);%重疊相加法求濾波后序列% yn=abs(fft(yn2));n1=[0:length(yn)-1]/length(yn)*fre;axes(handles.axes15);stem(n1,yn,'.');
title('信號濾波后的幅頻特性');xlabel('頻率(Hz)');ylabel('|X(ejw)|');axis([0,fre/2,0,max(yn)]);yn=angle(fft(yn2));
n1=[0:length(yn)-1]/length(yn)*fre;axes(handles.axes18);stem(n1,yn,'.');
title('信號濾波后的相頻特性');xlabel('頻率(Hz)');
ylabel('相位');
axis([0,fre/2,min(yn),max(yn)]);
pushbutton1_Callback(hObject, eventdata, handles);
function pushbutton6_Callback(hObject, eventdata, handles)
xn=get(handles.axes15,'userdata');fp=str2num(get(handles.edit10,'String'));fs=str2num(get(handles.edit11,'String'));fre=str2num(get(handles.edit5,'String'));wp=2*fp/fre*pi;ws=2*fs/fre*pi;
Bt=ws-wp;
N0=ceil(6.1*pi/Bt);N=N0+mod(N0+1,2);wc=(wp+ws)/2/pi;
hn=fir1(N-1,wc,bartlett(N));
yn=abs(fft(hn));yn=20*log10(yn);
n1=[0:length(yn)-1]/length(yn)*2;axes(handles.axes14);plot(n1,yn);
title('三角窗的損耗函數');xlabel('w/π');
ylabel('20log|Hg(w)|');axis([0,1,min(yn),max(yn)]);axes(handles.axes17);yn=angle(hn);n1=[0:length(yn)-1]/length(yn)*2;plot(n1,yn);
title('三角窗的相頻特性');xlabel('w/π');
ylabel('相位');
axis([0,1,min(yn),max(yn)]);
yn2=fftfilt(hn,xn,512);yn=abs(fft(yn2));
n1=[0:length(yn)-1]/length(yn)*fre;axes(handles.axes15);stem(n1,yn,'.');
title('信號濾波后的幅頻特性');xlabel('頻率(Hz)');ylabel('|X(ejw)|');axis([0,fre/2,0,max(yn)]);yn=angle(fft(yn2));
n1=[0:length(yn)-1]/length(yn)*fre;axes(handles.axes18);stem(n1,yn,'.');
title('信號濾波后的相頻特性');xlabel('頻率(Hz)');
ylabel('相位');
axis([0,fre/2,min(yn),max(yn)]);
pushbutton1_Callback(hObject, eventdata, handles);
function pushbutton7_Callback(hObject, eventdata, handles)
xn=get(handles.axes15,'userdata');fp=str2num(get(handles.edit10,'String'));fs=str2num(get(handles.edit11,'String'));fre=str2num(get(handles.edit5,'String'));wp=2*fp/fre*pi;ws=2*fs/fre*pi;if(fp N0=ceil(6.2*pi/Bt);N=N0+mod(N0+1,2);wc=(wp+ws)/2/pi; hn=fir1(N-1,wc,hanning(N));else Bt=wp-ws; N0=ceil(6.2*pi/Bt);N=N0+mod(N0+1,2);wc=(wp+ws)/2/pi; hn=fir1(N-1,wc,'high',hanning(N));end yn=abs(fft(hn));yn=20*log10(yn); n1=[0:length(yn)-1]/length(yn)*2;axes(handles.axes14);plot(n1,yn); title('漢寧窗的損耗函數');xlabel('w/π'); ylabel('20log|Hg(w)|');axis([0,1,min(yn),max(yn)]);axes(handles.axes17);yn=angle(hn); n1=[0:length(yn)-1]/length(yn)*2;plot(n1,yn); title('漢寧窗的相頻特性');xlabel('w/π'); ylabel('相位'); axis([0,1,min(yn),max(yn)]); yn2=fftfilt(hn,xn,512);yn=abs(fft(yn2)); n1=[0:length(yn)-1]/length(yn)*fre;axes(handles.axes15);stem(n1,yn,'.'); title('信號濾波后的幅頻特性');xlabel('頻率(Hz)');ylabel('|X(ejw)|');axis([0,fre/2,0,max(yn)]);yn=angle(fft(yn2)); n1=[0:length(yn)-1]/length(yn)*fre;axes(handles.axes18);stem(n1,yn,'.'); title('信號濾波后的相頻特性');xlabel('頻率(Hz)'); ylabel('相位'); axis([0,fre/2,min(yn),max(yn)]); pushbutton1_Callback(hObject, eventdata, handles); function pushbutton8_Callback(hObject, eventdata, handles) xn=get(handles.axes15,'userdata');fp=str2num(get(handles.edit10,'String'));fs=str2num(get(handles.edit11,'String'));fre=str2num(get(handles.edit5,'String'));wp=2*fp/fre*pi;ws=2*fs/fre*pi;if(fp N0=ceil(6.2*pi/Bt);N=N0+mod(N0+1,2);wc=(wp+ws)/2/pi; hn=fir1(N-1,wc,hamming(N));else Bt=wp-ws; N0=ceil(6.2*pi/Bt);N=N0+mod(N0+1,2);wc=(wp+ws)/2/pi; hn=fir1(N-1,wc,'high',hamming(N));end yn=abs(fft(hn));yn=20*log10(yn); n1=[0:length(yn)-1]/length(yn)*2;axes(handles.axes14);plot(n1,yn); title('哈明窗的損耗函數');xlabel('w/π'); ylabel('20log|Hg(w)|');axis([0,1,min(yn),max(yn)]);axes(handles.axes17);yn=angle(hn); n1=[0:length(yn)-1]/length(yn)*2;plot(n1,yn); title('哈明窗的相頻特性');xlabel('w/π'); ylabel('相位'); axis([0,1,min(yn),max(yn)]); yn2=fftfilt(hn,xn,512);yn=abs(fft(yn2)); n1=[0:length(yn)-1]/length(yn)*fre;axes(handles.axes15);stem(n1,yn,'.'); title('信號濾波后的幅頻特性');xlabel('頻率(Hz)');ylabel('|X(ejw)|');axis([0,fre/2,0,max(yn)]);yn=angle(fft(yn2)); n1=[0:length(yn)-1]/length(yn)*fre;axes(handles.axes18);stem(n1,yn,'.'); title('信號濾波后的相頻特性');xlabel('頻率(Hz)'); ylabel('相位'); axis([0,fre/2,min(yn),max(yn)]); pushbutton1_Callback(hObject, eventdata, handles); %---Executes during object creation, after setting all properties.function axes12_CreateFcn(hObject, eventdata, handles)% hObject handle to axes12(see GCBO) % eventdata reservedhandles not created until after all CreateFcns called % Hint: place code in OpeningFcn to populate axes12 %---Executes on mouse press over axes background.function axes12_ButtonDownFcn(hObject, eventdata, handles)% hObject handle to axes12(see GCBO) % eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA) % Hints: get(hObject,'String')returns contents of edit12 as text % str2double(get(hObject,'String'))returns contents of edit12 as a double %---Executes during object creation, after setting all properties.function edit12_CreateFcn(hObject, eventdata, handles)% hObject handle to edit12(see GCBO) % eventdata reservedhandles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end %---If Enable == 'on', executes on mouse press in 5 pixel border.%---Otherwise, executes on mouse press in 5 pixel border or over edit5.function edit5_ButtonDownFcn(hObject, eventdata, handles)% hObject handle to edit5(see GCBO) % eventdata reservedto be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA) %---Executes during object deletion, before destroying properties.function edit12_DeleteFcn(hObject, eventdata, handles)% hObject handle to edit12(see GCBO) % eventdata reserved-to be defined in a future version of MATLAB % handles structure with handles and user data(see GUIDATA) 數字信號處理復習要點 數字信號處理主要包括如下幾個部分 1、離散時間信號與系統的基本理論、信號的頻譜分析 2、離散傅立葉變換、快速傅立葉變換 3、數字濾波器的設計 一、離散時間信號與系統的基本理論、信號的頻譜分析 1、離散時間信號: 1)離散時間信號。時間是離散變量的信號,即獨立變量時間被量化了。信號的幅值可以是連續數值,也可以是離散數值。2)數字信號。時間和幅值都離散化的信號。 (本課程主要講解的實際上是離散時間信號的處理)3)離散時間信號可用序列來描述 4)序列的卷積和(線性卷積) y(n)?m????x(m)h(n?m)?x(n)*h(n) ?5)幾種常用序列 ?1,n?0a)單位抽樣序列(也稱單位沖激序列)?(n),?(n)?? ?0,n?0?1,n?0b)單位階躍序列u(n),u(n)?? ?0,n?0?1,0?n?N?1c)矩形序列,RN(n)?? 0,n?其它?d)實指數序列,x(n)?anu(n) 6)序列的周期性 所有n存在一個最小的正整數N,滿足:x(n)?x(n?N),則稱序列x(n)是周期序列,周期為N。(注意:按此定義,模擬信號是周期信號,采用后的離散信號未必是周期的) 7)時域抽樣定理: 一個限帶模擬信號xa(t),若其頻譜的最高頻率為F0,對它進行等間隔抽樣而得x(n),抽樣周期為T,或抽樣頻率為Fs?1/T; 只有在抽樣頻率Fs?2F0時,才可由xa(t)準確恢復x(n)。 2、離散時間信號的頻域表示(信號的傅立葉變換) X(j?)?n????x(n)e??j?n,X(j(??2?))?X(j?) 1?x(n)?X(j?)ej?nd? ?2??? 3、序列的Z變換 X(z)?Z[x(n)]?n????x(n)z??n 1)Z變換與傅立葉變換的關系,X(j?)?X(z)z?ej? 2)Z變換的收斂域 收斂區域要依據序列的性質而定。同時,也只有Z變換的收斂區域確定之后,才能由Z變換唯一地確定序列。 一般來來說,序列的Z變換的收斂域在Z平面上的一環狀區域:Rx??|z|?Rx? ?x(n)N1?n?N23)有限長序列:x(n)??,0?|z|?? 0其它??x(n)N1?n??右序列:x(n)??,|Z|>Rx- 其它?0?x(n)???n?N2左序列:x(n)??,0其它?(|z| 常用序列的Z變換: Z[?(n)]?1,|z|?01,|z|?1?11?z 1Z[anu(n)]?,|z|?|a|1?az?11Z[bnu(?n?1)]?,|z|?|b|1?bz?1Z[u(n)]? 逆變換 x(n)?12?jn?1X(z)zdzx,C:收斂域內繞原點逆時針的一條閉合曲線 ??c1)留數定理:x(n)??[X(z)zn?1在C內極點留數之和] 2)留數輔助定理:x(n)???[X(z)zn?1在C外極點留數之和] 3)利用部分分式展開:X(z)??Z變換求解。 4、離散時間系統: T[x(n)]?y(n)系統函數:H(j?)?Y(j?)Y(z),H(z)? X(j?)X(z)Ak,然后利用定義域及常用序列的1?akz?1沖激響應:h(n)?T[?(n)] 5、線性系統:滿足疊加原理的系統。T[ax(n)?by(n)]?aT[x(n)]?bT[y(n)] 6、移不變系統:若T[x(n)]?Y(n),則T[x(n?k)]?Y(n?k) 7、線性移不變系統 可由沖激響應來描述(系統的輸出相應是輸入與單位沖激響應的線性卷積) y(n)?x(n)*h(n),Y(j?)?X(j?)H(j?),Y(z)?X(z)H(z) 8、系統的頻率特性可由其零點及極點確定 X(z)??bziM?i?ak?0i?0N?A?(1?zziM?1)?Akz?k?(1?zk?1i?1N?(z?z)ziM?Mkz?1)?(z?zk?1i?1N k)z?N(式中,zk是極點,zi是零點;在極點處,序列x(n)的Z變換是不收斂的,因此收斂區域內不應包括極點。) 9、穩定系統:有界的輸入產生的輸出也有界的系統,即:若|x(n)|??,則|y(n)?|? 線性移不變系統是穩定系統的充要條件: n????|h(n)|?? ?或:其系統函數H(z)的收斂域包含單位園 |z|=1 10、因果系統:n0時刻的輸出y(n0)只由n0時刻之前的輸入x(n),n?n0決定 線性移不變系統是因果系統的充要條件:h(n)?0,n?0 或:其系統函數H(z)的收斂域在某園外部:即:|z|>Rx 11、穩定因果系統:同時滿足上述兩個條件的系統。 h(n)?0,n?0 線性移不變系統是因果穩定系統的充要條件:?|h(n)|??,n????或:H(z)的極點在單位園內 H(z)的收斂域滿足:|z|?Rx?,Rx??1 12、差分方程 線性移不變系統可用線性常系數差分方程表示(差分方程的初始條件應滿足松弛條件) ?ay?n?k???bx?n?i? kik?0i?0NM13、差分方程的解法 1)直接法:遞推法 2)經典法 3)由Z變換求解 二、離散傅立葉變換、快速傅立葉變換 1、周期序列的離散傅立葉級數(DFS) Xp(k)?DFS[xp(n)]??xp(n)en?0N?1?j2?knNkn ??xp(n)WNn?0N?11xp(n)?IDFS[Xp(k)]?N其中:WN=e?j2?/N K?O?N?1XP?k?e?2??j??kn?N?1?NK?O?N?1XP?k?WN?kn 2、有限長序列的離散傅立葉變換(DFT) knX(k)?DFT[x(n)]?{DFS[x(?n?N)]}RN(k)??x(n)WN,0≤k≤N?1 n?0N?11N?1?kn x(n)?IDFT[X(k)]?{IDFS[X(?k?N)]}RN(n)??X(k)WN,0≤n≤N?1 Nk?0應當注意,雖然x(n)和X(k)都是長度為N得有限長序列,但他們分別是由周期序列xp(n)和Xp(k)截取其主周期得到的,本質上是做DFS或IDFS,所以不能忘記它們的隱含周期性。尤其是涉及其位移特性時更要注意。 3、離散傅立葉變換與Z變換的關系 X(k)?X(j?)|2??X(z)|j2?k ??Nkz?eN 4、頻域抽樣定理 對有限長序列x(n)的Z變換X(z)在單位圓上等間隔抽樣,抽樣點數為N,或抽樣間隔為2?/N,當N≥M時,才可由X(k)不失真恢復X(j?)。 1?z?N內插公式:X(z)?N 5、周期卷積、循環卷積 周期卷積:xp3(n)??xp1(m)xp2(n?m) m?0N?1X(k)??k?1k?01?WNzN?1循環卷積:x3(n)?x1(n)?N?1?x2(n)?xp3(n)RN(n)???xp1(m)xp2(n?m)?RN(n) ?m?0? 6、用周期(周期)卷積計算有限長序列的線性卷積 對周期要求:N?N1?N2?1(N1、N2分別為兩個序列的長度) 7、基2 FFT算法 1)數據要求:N?2M 2)計算效率(乘法運算次數:NM,加法計算次數:NM)(復數運算)(DFT運算:乘法運算次數:N2,加法計算次數:N2)(復數運算) 8、快速卷積(采用FFT計算) 9、分辨率 三、數字濾波器的設計 (一)FIR濾波器的設計 1、特點:可實現嚴格的線性相位特性、系統是穩定的、因果的、階數較高 2、實現線性相位的條件(1)h(n)為實數(2)h(n)=h(N-1-n)做一般意義下的FIR濾波器,N是偶數,不適合做高通濾波器 或 h(n)=-h(N-1-n)對稱中心:(N-1)/2 適于做希爾伯特變換器,微分器和正交網絡。 3、主要設計方法 1)窗函數法 2)頻率抽樣設計 頻率抽樣內插公式設計。特點: 頻率特性可直接控制。 若濾波器是窄帶的,則能夠簡化系統 若無過渡帶樣本,則起伏較大。改進辦法是增加過渡帶樣本,采用過渡帶的自由變量法,通常使用優化方法求解??傻玫捷^好的起伏特性,但是會導致過渡帶寬度加大,改進辦法是增加抽樣點數。 抽樣點的獲得采取兩種辦法:I型抽樣及II型抽樣。 若要滿足線性相位特性,則相位要滿足一定要求。 (二)IIR濾波器的設計 1、特點 ? 階數少、運算次數及存儲單元都較少 ? 適合應用于要求相位特性不嚴格的場合。 ? 有現成的模擬濾波器可以利用,設計方法比較成熟。? 是遞歸系統,存在穩定性問題。 2、主要設計方法 先設計模擬濾波器,然后轉換成數字濾波器。設計過程: 1)先設計模擬低通濾波器Ha(s):butterworth濾波器設計法等,有封閉公式利用 2)將模擬原型濾波器變換成數字濾波器(1)模擬低通原型先轉換成數字低通原型,然后再用變量代換變換成所需的數字濾波器; ? 模擬低通原型先轉換成數字低通原型:HaL(s)?HL(z),主要有沖激不變法、階躍不變法、雙線性變換法等。 ? 將數字低通原型濾波器通過變量代換變換成所需的數字濾波器。,z?1?G(Z?1)HL(z)?HD(Z) (2)由模擬原型變成所需型式的模擬濾波器,然后再把它轉換成數字濾波器; ? 將模擬低通原型濾波器通過變量代換變換成所需的模擬濾波器。HaL(s)?HaD(S1),s?F(S1) ? 模擬濾波器轉換成數字數字濾波器:HaD(s)?HD(z),主要有沖激不變法、階躍不變法、雙線性變換法等 (3)由模擬原型直接轉換成所需的數字濾波器 直接建立變換公式:HaL(s)?HD(z),s?G(z?1) 3、模擬數字轉換法(1)沖激不變法 H(z)?Z?L?1[Ha(s)]|t?nT? 單階極點情況 NAkAk'skT' ?H(z)??,Ha(s)??A?Ap?ekkk?11?pzs?sk?1k?1kkN (2)階躍不變法 H(z)?z?1Z?L?1[Ha(s)/s]|t?nT? z 沖激不變法和階躍不變法的特點: ? 有混疊失真 ? 只適于限帶濾波器 ? 不適合高通或帶阻數字濾波器的設計 1?z?1(3)雙線性變換法 s?C ?11?z常數C的計算:1)C??ccot(?c2)2)C=2/T 特點: (i)穩定性不變(ii)無混疊 (iii)頻率非線性變換,會產生畸變,設計時,頻率要做預畸變處理 4、直接法設計IIR數字濾波器 ? z平面的簡單零極點法 (三)濾波器的網絡結構 數字信號處理課程總結 信息09-1班 陳啟祥 金三山 趙大鵬 劉恒 進入大三,各種專業課程的學習陸續展開,我們也在本學期進行了數字信號處理這門課程的學習。 作為信心工程專業的核心課程之一,數字信號處理的重要性是顯而易見的。在近九周的學習過程中,我們學習了離散時間信號與系統的時域及頻域分析、離散傅里葉變換、快速傅里葉變換、IIR及FIR數字濾波器的設計及結構等相關知識,并且在實驗課上通過MATLAB進行了相關的探究與實踐??傮w來說,通過這一系列的學習與實踐,我們對數字信號處理的有關知識和基礎理論已經有了初步的認知與了解,這對于我們今后進一步的學習深造或參加實際工作都是重要的基礎。 具體到這門課程的學習,應當說是有一定的難度的。課本所介紹的相關知識理論性很強,并且與差分方程、離散傅里葉級數、傅里葉變換、Z變換等數學工具聯系十分緊密,所以要真正理解課本上的相關理論,除了認真聆聽老師的講解,還必須要花費大量時間仔細研讀課本,并認真、獨立地完成課后習題。總之,理論性強、不好理解是許多同學對數字信號處理這門課程的學習感受。 另外,必須要說MATLAB實驗課程的開設是十分必要的。首先,MATLAB直觀、簡潔的操作界面對于我們真正理解課堂上學來的理論知識幫助很大;其次,運用MATLAB進行實踐探究,也使我們真正意識到,在信息化的今天,研究數字信號離不開計算機及相關專業軟件的幫助,計算機及軟件技術的發展,是今日推動信息技術發展的核心動力;最后,作為信息工程專業的學生,在許多學習與實踐領域需要運用MATLAB這樣一個強大工具,MATLAB實驗課程的開設,鍛煉了我們的實踐能力,也為我們今后在其他領域運用MATLAB打下了基礎。 課程的結束、考試的結束不代表學習的結束,數字信號處理作為我們專業的基礎之一,是不應當被我們拋之腦后的。 最后感謝老師這幾周來的教誨與指導,謝謝老師! 2012年5月7日 基于微課的數字信號處理教學方法的探討 【摘 要】基于目前數字信號處理課程在教學方法及教學手段上的不足,本文提出了基于“微課”的教學方法,通過對該課程重點難點內容做成微課視頻的形式,供學生課前或課后學習,以提高學生的學習興趣及自主學習能力,再結合雙向互動式研究型教學方法及教學實踐力度的加大,從而改善教學效果,使獨立院校學生能更好的掌握這門課程。 【關鍵詞】數字信號處理;微課;教學改革;實踐教學 0 引言 數字信號處理作為通信、電子信息類專業的一門專業基礎課程,要求學生有微積分、信號與系統分析等課程的基礎,另外數字信號處理是一門理論性非常強的課程,抽象概念較多,涉及的數學知識也較多,而獨立學院學生數學基礎、信號與系統分析基礎都相對比較薄弱,所以學習本課程有一定的難度,易出現學生學習興趣低、怕學以及厭學等現象。針對該問題,本文提出了一種基于微課的教學方式,將課程內容制作成微課,分享給學生,以提高學生的學習興趣。 “微課”采用了精細化管理的教學模式,把“慕課”平臺上的“高級軟件工程”課程加以優化及改編之后得到“微課”平臺,加州大學伯克利分校的 Armando Fox 教授將“微課”平臺引入了校園,并取得了意想不到的好效果。2013 年,哈佛大學也開始嘗試“微課”平臺的教學,效果很好,且學術委員會主席Robert Lue 教授對“微課”給出了極高的評價,認為相對于“慕課”教學方式而言,“微課”體現了“幾乎不可避免的進化”。科羅拉多大學全球分校最初采用“慕課”大班教學,經過調研,對學生的需求進行分析,最終也將所有課程都改成采用“微課”的在線授課模式。 從人的認知規律出發,人在學習的時候前十分鐘注意力最集中,所以“微課”長度一般設置在5-15分鐘的?!拔⒄n”在闡述問題的方式上除了教師講解外,還結合動畫、視頻等各種信息技術,使得對知識的講解過程更為直觀。且由于一個微課視頻時間較短,可以突破傳統課堂對時間和地點的限制,學生可以隨時隨地學習,也可以根據個人學習情況調整學習進度,使得學生真正成為學習的主角。數字信號處理教學中出現的問題 近幾年來,數字信號處理課程多媒體與黑板板書相結合的教學方式,再結合Matlab軟件實驗,教學效果有一定的改善,但仍存在不足之處,主要體現為一下幾個方面: 1.1 教學內容方面 公式推導比較多,概念比較抽象,內容枯燥,學生無法將所學的內容與工程實踐相結合,再者獨立學院學生基礎較差,所以易出現“太難,聽不懂”等不學、厭學現象。 1.2 教學方法方面 傳統教學多采用“灌輸式”的方法進行授課,教師作為課堂主體,單向地向學生灌輸知識,教學的方式過于單調,不足以吸引學生的注意力,和學習興趣的提高。 1.3 實踐教學方面 實驗目前僅局限于理論仿真,而沒有硬件的實踐操作,學生很難把所學的理論知識和理論仿真同實際應用聯系起來,而獨立學院學生更應該把學習的重心往實踐方向傾斜。數字信號處理教學改革措施 針對數字信號處理教學過程中出現的3個問題,我們可以從以下3個方面進行改進。 2.1 教學內容的改革 數字信號處理課程的知識結構可分為變換域和數字濾波器兩部分。對于變換域部分的知識,如離散時間信號的時域頻域分析部分與信號與系統分析Z變換部分是重復的,所以在實際教學中,可以對這部分內容進行精簡和提煉,并且刪除一些復雜的公式推導。關于時域與變換域之間的關系、波形變化以及濾波器的原理等抽象的內容,設計原理的講解可以精簡,而應側重如何通過Matlab實現具體濾波器的設計,另外,在課堂中增加數字信號應用實例的MALTAB程序講解,演示仿真波形,通過多波形的分析,使學生理解時域信號好頻域信號的特性,從而進一步加深學生對理論知識的理解。 2.2 教學方法和教學手段的改革 2.2.1 引入微課形式的教學方法 在傳統“灌輸式”、PPT講解的基礎上,借助視頻學習、慕課、微課豐富教學手段,將課程重要內容制作成微課,在課堂上播放,吸引學生注意力,提高學生學習興趣;也可放到網絡平臺上,供學生學習,充分利用學生的碎片化時間提供在線學習的機會。甚至能夠翻轉課堂,學生可在課前通過微課自主完成課堂學習,而在課堂上對重點難點進行討論,使學生在討論的過程中深化對知識點的理解,同時可以活躍課堂氣氛,讓學生成為課堂的主體。 2.2.2 雙向互動式研究型學習 針對課程部分重點難點教學內容,提取出合適的討論課題,進行定期或不定期的專題討論。首先,通過課堂或是其他網絡平臺向學生發布題目,讓學生提前做好討論或者報告準備,采用多媒體上講臺進行專題討論或報告。學生通過對課題的準備及討論過程可對該課程內容有更深入的理解,且能培養學生的辯證思考的能力,另外教師對課題討論的主要參與人做相應的獎勵,比如加平時分,來誘導學生自主學習。 2.3 實踐教學的改革 部分獨立學院目前已經開展了數字信號處理的軟件實驗課程,即基于Matlab軟件,通過編程實現對信號的仿真,可一定程度上加深學生對信號時域頻域的形象理解,可提高學生的編程能力,但畢竟Matlab軟件實驗只是做信號建模及仿真,所以很多學生仍然存在“學了這門課,卻不知道怎么在實際中應用”的疑問,因此,增加DSP硬件實驗是必要的。然而增加DSP硬件實驗需要校方新建DSP實驗室,該問題不是朝夕之間能解決的問題。所以針對此問題,可先進行探索性實驗,即通過收集整理其他院校的DSP硬件實現演示視頻,使學生對理論的仿真到實際的硬件實現有一個形象全面的了解,比如較抽象的知識點像卷積運算、FIR/IIR數字濾波器以及快速傅里葉變換FFT的DSP實現,通過實驗課使學生把抽象的知識與實際應用相結合??偨Y 實踐證明,基于微課及雙向互動式的教學方法能充分調動學生的學習積極性,提高學生的自學能力。另外,引入DSP實踐教學,使學生更能將理論知識與工程實踐相結合。 【參考文獻】 [1]曾偉梁,劉穎,鮑曼,徐宏艷,趙沛豐.用 MATLAB 實踐數字信號處理課程的輔助教學[J].黑龍江生態工程職業學院學報,2014(1).[2]高靜,王鳳文,舒冬梅.《數字信號處理》課程教學實踐與探索[J].科技創新導報,2011(4):153-154.[3]曾偉梁,劉穎,鮑曼,徐宏艷,趙沛豐.用MATLAB 實踐數字信號處理課程的輔助教學[J].黑龍江生態工程職業學院學報,2014(1).[4]劉伯紅,閻英,方義秋.高校計算機實踐教學質量保障體系改革探索與實踐[J].實驗室研究與探索,2012,31(12):121-123,150.[責任編輯:楊玉潔]第三篇:數字信號處理復習總結
第四篇:數字信號處理課程總結(推薦)
第五篇:基于微課的數字信號處理教學方法的探討