在講解濾波器的種類之前,必須先講解濾波器實現濾波的過程。怎么實現?matlab中是可以用filter函數,那總不能在單片機或者FPGA中也調用filter函數吧。可能嗎?
不可能!
那怎么實現濾波過程呢?先來了解濾波過程的本質,就是乘加運算。FPGA里面實現乘加運算時非常容易的。
先來看看FIR濾波器在窗函數設計方式中采用不同窗的效果。怎么觀察效果?肯定是通過幅頻響應了。
數字信號處理中通常是取其有限的時間段進行分析,而不是對無限長的信號進行測量和運算。具體做法是從信號中截取一個時間段,然后對信號進行傅里葉變換、相關分析等處理。信號的截斷產生了能量泄漏,而用FFT計算頻譜又產生了柵欄效應,從原理上講這兩種誤差都是不能消除的。在FFT分析中為了減少或消除頻譜能量泄漏及柵欄效應,可采用不同的截取函數對信號進行截短,該函數稱為窗函數,簡稱為窗。
泄漏與窗函數頻譜的兩側旁瓣有關,對于窗函數的選用總的原則是,要從保持最大信息和消除旁瓣的綜合效果出發來考慮問題,盡可能使窗函數頻譜中的主瓣寬度應盡量窄,以獲得較陡的過渡帶。旁瓣衰減應盡量大,以提高阻帶的衰減,但通常都不能同時滿足這兩個要求。頻譜中的如果兩側瓣的高度趨于零,而使能量相對集中在主瓣,就可以較為接近于真實的頻譜。不同的窗函數對信號頻譜的影響是不一樣的,這主要是因為不同的窗函數,產生泄漏的大小不一樣,頻率分辨能力也不一樣。信號的加窗處理,重要的問題是在于根據信號的性質和研究目的來選用窗函數。
在設計FIR濾波器時,同樣要求窗函數不僅可以影響過渡帶寬度,還能影響肩峰和波動的大小。因此,,選擇窗函數應使其滿足以下兩個要求:
(1)主瓣寬度盡量小,以使過渡帶盡量陡。
(2)旁瓣相對于主瓣越小越好,這樣可使肩峰和波動減小,即盡可能集中于主瓣內。
fir1函數默認使用的是什么窗呢?
在matlab的help中查找該函數就能知曉!
還有哪些窗可以選擇呢?
再來看看程序如何?
理論和仿真結合在一起,
會使得大家牢固的掌握概念。
格式必須規范!
這里只舉高通濾波器和低通濾波器的例子。
程序很簡單。
只要同學們花時間就能搞清楚。
規范的寫程序是寫好程序的開始!
繼續講解濾波過程的乘加等效原理。
用程序說話是硬道理!
生成一個濾波器!
寫程序伴隨著注釋會讓程序很親民哦!
fir_order = 128;
%濾波器的階數
fir_low_filter = fir1(fir_order,0.2);
%fir1函數
使用filter函數進行濾波!
filter_sin_signal = filter(fir_low_filter,1,sin_signal);
怎么用乘加等效呢?
思考一下再看程序!
fori=129:length(sin_signal)
sum = 0;
forii=1:length(fir_low_filter)
sum=sum+sin_signal(i-(ii-1))*filter_sin_signal(ii);
end
filter_sin_signal1(i)=sum;
end
看看結果會一致嗎?
肯定的啦!
是不是和卷積過程很像啊?好吧,尷尬的告訴大家,其實就是卷積。這就是為什么在課上強調卷積是《數字信號處理課程》基礎的原因!
未完,待續!
責任編輯:xj
原文標題:電氣信息類專業課程之matlab系統仿真 第三章 濾波器的種類(1)
文章出處:【微信公眾號:算法工匠】歡迎添加關注!文章轉載請注明出處。
-
濾波器
+關注
關注
161文章
7846瀏覽量
178416 -
MATLAB仿真
+關注
關注
4文章
176瀏覽量
19945 -
電氣信息
+關注
關注
0文章
13瀏覽量
7592
原文標題:電氣信息類專業課程之matlab系統仿真 第三章 濾波器的種類(1)
文章出處:【微信號:gh_30373fc74387,微信公眾號:通信工程師專輯】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論