哈尔滨工业大学威海校区_《数字信号处理》实验三

  • 格式:doc
  • 大小:143.00 KB
  • 文档页数:14

数字信号处理实验报告实验名称:实验三FIR滤波器设计实验日期:2011.11.20姓名:尤伟学号:090240328哈尔滨工业大学(威海)实验三FIR滤波器设计一、实验目的1、熟悉FIR 滤波器设计的基本方法;2、掌握窗函数法设计FIR 滤波器的原理和方法;3、熟悉线性相位FIR 滤波器的幅频特性和相位特性;4、了解不同窗函数对滤波器性能的响应。

二、实验原理1、窗函数法设计FIR 滤波器原理采用理想滤波器的截断单位脉冲响应序列实现实际滤波器。

对理想低通滤波器的单位脉冲响应h(n)进行长度为N 的截取,得到长度为N 的序列h(n),截取时保证因果性和对滤波(d) 器线性相位的要求。

为减少吉布斯效应,对h(n)进行加窗,选择合适的窗函数以保证阻带衰减和过渡带要求。

注意窗函数的副瓣影响滤波器的阻带衰减,主瓣宽度影响滤波器的过渡带宽。

理想低通频率响应理想低通单位取样响应关于α偶对称,实序列全通系统的单位取样响应2、窗函数法设计FIR 低通过程1) 取理想低通单位取样响应的N 点,N 奇数(N-1 阶滤波器)2) 根据阻带衰减和过渡带要求选取窗函数—在保证阻带衰减满足要求的情况下,尽量选择主瓣窄的函数w(n)3) 得到加窗后的序列h(n)=hd(n)w(n) 。

w(n) 时关于(N-1)/2 偶对称,所以h(n)对称性取决于hd(n)4) 验证h(n)的频率响应是否满足设计要求。

若满足,则终止;否则重复2、3、4 步骤。

3、窗函数法设计高通高通= 全通—低通.与低通设计的不同只在第1)步骤,选取理想高通的单位取样响应序列N 点4、设计带通带通= 低通1 —低通2 带通截止频率为ωc1 >ωc2,选择低通1 截止频率ωc1,低通1 截止频率ωc2 5、设计带阻带阻= 低通+ 高通6、频率采样法设计FIR 滤波器原理若要求设计的滤波器Hd(ejw)公式复杂或者根本不能用封闭公式给出,对Hd(ejw)进行频率域取样,得到N 点离散取样值H(k), 用N 点频率取样值得到滤波器。

H(k) 要满足线性相位FIR 的频率响应要求。

三、实验内容1、验证窗函数N 变化时,验证其频谱主瓣副瓣比、主瓣宽度的变化。

a)矩形窗函数的N 变化时,验证其其频谱主瓣副瓣幅度比基本不会发生变化,而主瓣宽度将会变窄。

这说明,当用矩形窗函数设计滤波器时,增大N 不能使得阻带衰减减小,但能够减小过渡带。

b)再选取其他的窗如hamming/hanning 窗,验证当N 变化时,其频谱主瓣宽度变化、主瓣副瓣比值变化情况。

程序:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 数字信号处理实验 - FIR滤波器设计% 1 验证窗函数N变化时,验证其频谱主瓣副瓣比、主瓣宽度的变化% a)矩形窗函数的N变化时,验证其其频谱主瓣副瓣幅度比基本不会发生变化,% 而主瓣宽度将会变窄。

这说明,当用矩形窗函数设计滤波器时,增大N 不能使% 得阻带衰减减小,但能够减小过渡带。

% b)再选取其他的窗如hamming/hanning 窗,验证当N 变化时,其频谱主瓣宽% 度变化、主瓣副瓣比值变化情况。

% 姓名:尤伟% 学号:090240328% 时间:2011.11.19 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% clc,clear all,close all;N_array =[ 21 81 ];Point_array =[ 'b', 'r' ];for I=1:length(N_array)N = N_array(I);rect_window = ones(1,N);hanning_window = hanning(N);hamming_window = hanning(N);H_rect = freqz( rect_window, 1, 512 );H_hann = freqz( hanning_window, 1, 512 );H_hamm = freqz( hamming_window, 1, 512 );freq_norm = [0:511]/512; %归一化的频率轴subplot(3,1,1);plot( freq_norm,20*log10(abs(H_rect)/max(abs(H_rect))) ,Point_array(I ) ); hold on;title( '矩形窗频谱' );xlabel( '归一化频率 w/pi' ); ylabel( '幅度(dB)' );subplot(3,1,2);plot( freq_norm,20*log10(abs(H_hann)/max(abs(H_hann))) ,Point_array(I ) ); hold on;title( 'Hanning窗频谱' );xlabel( '归一化频率 w/pi' ); ylabel( '幅度(dB)' );subplot(3,1,3);plot( freq_norm,20*log10(abs(H_hamm)/max(abs(H_hamm))) ,Point_array(I ) ); hold on;title( 'Hamming窗频谱' );xlabel( '归一化频率 w/pi' ); ylabel( '幅度(dB)' );endsubplot( 3,1,1); legend( ['N=' num2str(N_array(1))], ['N='num2str(N_array(2))] );subplot( 3,1,2); legend( ['N=' num2str(N_array(1))], ['N=' num2str(N_array(2))] );subplot( 3,1,3); legend( ['N=' num2str(N_array(1))], ['N=' num2str(N_array(2))] );0.10.20.30.40.50.60.70.80.91-100-500矩形窗频谱归一化频率 w/pi 幅度(d B )0.10.20.30.40.50.60.70.80.91-200-1000Hanning 窗频谱归一化频率 w/pi 幅度(d B )0.10.20.30.40.50.60.70.80.91-200-1000Hamming 窗频谱归一化频率 w/pi幅度(d B )结论:窗函数的N 变化时,验证其频谱主瓣副瓣幅度比基本不会发生变化,而主瓣宽度将会变窄。

这说明,增大N 不能使得阻带衰减减小,但能够减小过渡带。

2、用窗函数法设计线性相位FIR 低通,通带截止频率wp=0.5PI, 阻带截止频率ws=0.6PI, 阻带衰减不小于40dB,通带衰减不大于3dB.a) 选取Hanning,Hamming 窗查看设计出来的FIR 的过渡带宽和阻带衰减是否满足要求,二者有什么不同。

b) 使用hamming 窗,将窗长增大1 倍,设计FIR 。

验证同样的窗函数类型(hamming) ,不同窗长度时,设计出来的FIR 的过渡带宽和阻带衰减都有什么变化。

程序:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 数字信号处理实验 - FIR 滤波器设计%2 用窗函数法设计线性相位FIR 低通,通带截止频率wp=0.5PI, 阻带截止频率ws=0.6PI, % 阻带衰减不小于40dB,通带衰减不大于3dB.% a)选取Hanning,Hamming 窗查看设计出来的FIR 的过渡带宽和阻带衰减是否满足要求, % 二者有什么不同。

% b)使用hamming 窗,将窗长增大1 倍,设计FIR。

验证同样的窗函数类型(hamming),% 不同窗长度时,设计出来的FIR 的过渡带宽和阻带衰减都有什么变化。

% 姓名:尤伟% 学号:090240328% 时间:2011.11.19 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% clc,clear all,close all;wp = 0.5*pi; %通带截至频率ws = 0.6*pi; %阻带截至频率wdel = ws - wp; %过渡带宽% Hanning窗N_hanning = ceil( 8*pi/wdel );Wn = (wp + ws)/2; %截止频率% N_hanning取奇数if mod(N_hanning,2)==0N_hanning = N_hanning + 1;endwindow_hanning = hanning(N_hanning); %获得hanning窗离散序列b_hanning = fir1( N_hanning-1, Wn/pi, window_hanning );%指定滤波器阶次,归一化截止频率,窗函数序列得到h[n]%注意滤波器的阶次=窗长-1 !!!!!freq_axis = [0:pi/512:pi-pi/512];freq_norm = [0:511]/512; %归一化的频率轴H_hanning = freqz( b_hanning, 1, 512);subplot(2,1,1);plot( freq_norm,20*log10(abs(H_hanning)) ); hold on;xlabel( '归一化频率w/pi' ); ylabel( '幅度(dB)' );title( '采用hanning和hamming设计的FIR-幅度响应');subplot(2,1,2);plot( freq_norm,angle(H_hanning) ); hold on;xlabel( '归一化频率w/pi' ); ylabel( '相位' );title( '采用hanning和hamming设计的FIR-相位响应');% Hamming窗N_hamming = ceil( 8*pi/wdel );Wn = (wp + ws)/2; %截止频率% N_hamming取奇数if mod(N_hamming,2)==0N_hamming = N_hamming + 1;endwindow_hamming = hamming(N_hamming); %获得hamming窗离散序列b_hamming = fir1( N_hamming-1, Wn/pi, window_hamming ); %指定滤波器阶次,归一化截止频率,窗函数序列得到h[n]%注意滤波器的阶次=窗长-1 H_hamming = freqz( b_hamming, 1, 512);subplot(2,1,1);plot(freq_norm, 20*log10(abs(H_hamming)),'k' );subplot(2,1,2);plot( freq_norm,angle(H_hamming),'k' ); hold on;% Hamming窗% 增大N时,查看滤波器带宽以及阻带衰减的变化N_hamming_2N = ceil( 8*pi/wdel )*2;Wn = (wp + ws)/2; %截止频率% N_hamming_2N取奇数if mod(N_hamming_2N,2)==0N_hamming_2N = N_hamming_2N + 1;endwindow_hamming = hamming(N_hamming_2N); %获得hamming窗离散序列b_hamming = fir1( N_hamming_2N-1, Wn/pi, window_hamming ); %指定滤波器阶次,归一化截止频率,窗函数序列得到h[n]%注意滤波器的阶次=窗长-1 H_hamming = freqz( b_hamming, 1, 512);subplot(2,1,1);plot(freq_norm, 20*log10(abs(H_hamming)),'r' );subplot(2,1,2);plot( freq_norm,angle(H_hamming),'r' ); hold on;legend( ['Hanning' num2str(N_hanning) '阶'] ,['Hamming 'num2str(N_hamming) '阶'],['Hamming ' num2str(N_hamming_2N) '阶'] );0.10.20.30.40.50.60.70.80.91-150-100-50050归一化频率w/pi幅度(d B )采用hanning 和hamming 设计的FIR-幅度响应0.10.20.30.40.50.60.70.80.91-4-2024归一化频率w/pi相位采用hanning 和hamming 设计的FIR-相位响应结论:从上图可以看出设计符合要求指标。