码迷,mamicode.com
首页 > 其他好文 > 详细

数字信号处理实验(六)——FIR滤波器的设计

时间:2016-01-03 00:33:35      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:

一、四种线性相位FIR滤波器的振幅响应

1、自编函数

[Hr,w,a,L]=hr_type1(h)(P256)  % h偶对称,N为奇数,h(n)=h(N-1-n)
[Hr,w,a,L]=hr_type2(h) (P257) % h偶对称,N为偶数,h(n)=h(N-1-n)
[Hr,w,a,L]=hr_type3(h) (P257) % h奇对称,N为奇数,h(n)=-h(N-1-n)
[Hr,w,a,L]=hr_type4(h) (P257) % h奇对称,N为偶数,h(n)=-h(N-1-n)

2、一个demo

技术分享

clear all;close all;clc
addpath(genpath(pwd)); % 添加当前文件夹下所有路径

%% 
% 题1. 线性相位 FIR 滤波器的特性:
%% (2)已知滤波器的系统函数如下所示,用以上已编好的函数,确定滤波器的振
% 幅响应Hr(w)以及零点位置:
h1_n = [-4,1,-1,-2,5,6,5,-2,-1,1,-4];     % 偶对称,N=11
h2_n = [-4,1,-1,-2,5,6,6,5,-2,-1,1,-4];   % 偶对称,N=12
h3_n = [-4,1,-1,-2,5,0,-5,2,1,-1,4];      % 奇对称,N=11
h4_n = [ -4,1,-1,-2,5,6,-6,-5,2,1,-1,4];  % 奇对称,N=12

new_figure(线性相位FIR滤波器);
subplot(2,2,1);
[Hr,w]=hr_type1(h1_n);
plot(w/pi, abs(Hr));
title(第一类线性相位滤波器);
xlabel(w/pi);

subplot(2,2,2);
[Hr,w]=hr_type2(h2_n);
plot(w/pi, abs(Hr));
title(第二类线性相位滤波器);
xlabel(w/pi);

subplot(2,2,3);
[Hr,w]=hr_type3(h3_n);
plot(w/pi, abs(Hr));
title(第三类线性相位滤波器);
xlabel(w/pi);

subplot(2,2,4);
[Hr,w]=hr_type4(h4_n);
plot(w/pi, abs(Hr));
title(第四类线性相位滤波器);
xlabel(w/pi);

 

二、窗函数法

1、窗函数设计参考指标

技术分享

2、窗函数设计方法一:

(1)根据实际阻带衰减指标,来确定所使用的窗函数。Matlab提供了几个函数来实现这些窗函数。

   W=boxcar(N);            % 矩形窗         -21dB
   W=triang(N);            % 三角窗         -25dB
   W=hanning(N);           % 汉宁窗         -44dB
   W=hamming(N);           % 海明窗         -53dB
   W=blackman(N);          % 布莱克曼窗     -74dB
   W=kaiser(N,beta);       % 凯泽窗         -80dB

(2)根据过渡带来计算出N值。

例: 通带截止频率wp, 阻带截止频率ws,已知为汉宁窗:N=3.1*2*pi/(ws-wp);

 

(3)求出理想的hd(n)。可使用ideal_lp(P185)来实现理想低通滤波器的冲激响应。

例:由ideal_lp来实现理想带阻滤波器的冲激响应。

hd=ideal_lp(wc1,N)+ideal_lp(pi,N)-ideal_lp(wc2,N);

 

(4)求得所设计的FIR滤波器的单位抽样响应:

h=hd.*w

 

(5)一个demo:

技术分享

clear all;
wp=0.2*pi;
Rp=0.25;
ws=0.3*pi;
As=50;

wd = ws-wp;
N = ceil(6.6*pi/wd);
wn = (wp+ws)/2;

%
hd = ideal_lp(wn,N+1);
w_ham=(hamming(N+1));
h = hd.*w_ham;
figure(2)
freqz(h,1,512)

 

 

3、窗函数设计方法二:

(1)根据实际阻带衰减指标,来确定所使用的窗函数。

(2)根据过渡带来计算出N值。

(3)利用Matlab所提供的函数fir1,来实现fir滤波器。

h=fir1(N,wn,’ftype’,windows(N+1))

?对于高通滤波器和带阻滤波器,N必须为偶数,N+1为奇数

?‘ftype’指的是:’low’,’bandpass’,’high’,’stop’

?设计的滤波器为N阶

(4)一个demo

技术分享

%example6.2.3
clear all;
wp=0.2*pi;
Rp=0.25;
ws=0.3*pi;
As=50;

wd = ws-wp;
N = ceil(6.6*pi/wd);
wn = (wp+ws)/2;
b=fir1(N,wn/pi,hamming(N+1));
figure(1)
freqz(b,1,512)

 

三、频率抽样法:

1、根据给定的N值和过渡点来求得Hd(k) 。

2、利用DFT反变换求的所需的h(n)。

h=real(ifft(H,N));

数字信号处理实验(六)——FIR滤波器的设计

标签:

原文地址:http://www.cnblogs.com/BlueMountain-HaggenDazs/p/5095466.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!