1、物理与电子信息工程学院实验报告实验课程名称:数字信号处理实验名称: FIR 数字滤波器设计与软件实现 班 级: 1012341 姓 名: 严娅 学 号: 101234153 成 绩:_ 实验时间: 2012 年 12 月 20 日 一、实验目的(1)掌握用窗函数法设计 FIR数字滤波器的原理和方法。(2)掌握用等波纹最佳逼近法设计 FIR数字滤波器的原理和方法。(3)掌握 FIR滤波器的快速卷积实现原理。(4)学会调用 MATLAB函数设计与实现 FIR滤波器。2、实验原理 1、 用 窗 函 数 法 设 计 FIR 数 字 滤 波 器 的 原 理 和 方 法 。如 果 所 希 望 的 滤 波
2、器 的 理 想 频 率 响 应 函 数 为 ,)(jdeH则 其 对 应 的 单 位 脉 冲 响 应 为= ( 2-1))(nhd21deHjjd)(窗 函 数 设 计 法 的 基 本 原 理 是 用 有 限 长 单 位 脉 冲 响 应 序 列逼 近 。 由 于 往 往 是 无 限 长 序 列 , 且 是 非 因 果 的 ,)(nh)(d)(d所 以 用 窗 函 数 将 截 断 , 并 进 行 加 权 处 理 , 得 到 : (2-2)nhn就 作 为 实 际 设 计 的 FIR 数 字 滤 波 器 的 单 位 脉 冲 响 应 序 列 ,)(其 频 率 响 应 函 数 为 :)(jdeH (2
3、-3)jd10Nnjh式 中 , N 为 所 选 窗 函 数 的 长 度 。 )(由 第 七 章 可 知 , 用 窗 函 数 法 设 计 的 滤 波 器 性 能 取 决 于 窗 函数 的 类 型 及 窗 口 长 度 N 的 取 值 。 设 计 过 程 中 , 要 根 据 对 阻)(n带 最 小 衰 减 和 过 渡 带 宽 度 的 要 求 选 择 合 适 的 窗 函 数 类 型 和 窗 口长 度 N。 各 种 类 型 的 窗 函 数 可 达 到 的 阻 带 最 小 衰 减 和 过 渡 带 宽度 见 第 七 章 。 这 样 选 定 窗 函 数 类 型 和 长 度 N 后 , 求 出 单 位 脉 冲
4、 响 应 , 并 按 式 ( 2-3) 求 出 。 是 否 满)(nh)(dn)(jeH)(j足 要 求 , 要 进 行 验 算 。 一 般 在 尾 部 加 零 使 长 度 满 足 于 2)(nh的 整 数 次 幂 , 以 便 用 FFT 计 算 。 如 果 要 观 察 细 节 , 补 零je点 数 增 多 即 可 。 如 果 不 满 足 要 求 , 则 要 重 新 选 择 窗 函 数)(jeH类 型 和 长 度 N, 再 次 验 算 , 直 至 满 足 要 求 。如 果 要 求 线 性 相 位 特 性 , 则 还 必 须 满 足 )(nh(2-4)1()nhn根 据 上 式 中 的 正 负
5、号 和 长 度 N 的 奇 偶 性 又 将 线 性 相 位 FIR 滤波 器 分 成 四 类 。 要 根 据 设 计 的 滤 波 特 性 正 确 选 择 其 中 一 类 。 例如 , 要 设 计 线 性 低 通 特 征 , 可 选 择 一 类 , 而 不)1()nNhn能 选 一 类 。)1()nNhn2、等波纹最佳逼近法等波纹最佳逼近法是一种优化设计法,它克服了窗函数设计法和频率采样法的缺点,使最大误差(即波纹的峰值)最小化,并在整个逼近频段上均匀分布。用等波纹最佳逼近法设计的 FIR数字滤波器的幅频响应在通带和阻带都是等波纹的,而且可以分别控制通带和阻带波纹幅度。这就是等波纹的含义。最佳逼
6、近是指在滤波器长度给定的条件下,使加权误差波纹幅度最小化。与窗函数设计法和频率采样法比较,由于这种设计法使滤波器的最大逼近误差均匀分布,所以设计的滤波器性能价格比最高。阶数相同时,这种设计法使滤波器的最大逼近误差最小,即通带最大衰减最小,阻带最小衰减最大;指标相同时,这种设计法使滤波器阶数最低。实现 FIR数字滤波器的等波纹最佳逼近法的 MATLAB信号处理工具函数为 remez和 remezord。Remez 函数采用数值分析中的 remez多重交换迭代算法求解等波纹最佳逼近问题,求的满足等波纹最佳逼近准则的 FIR数字滤波器的单位脉冲响应 h(n) 。三、 实验内容及步骤(1)调用信号产生
7、函数 xtg产生具有加性噪声的信号 xt,并自动显示 xt及其频谱,如图 10.5.1所示;图 10.5.1 具有加性噪声的信号 x(t)及其频谱如图(2)设计滤波器,从高频噪声中提取 xt中的单频调幅信号,要求信号幅频失真小于 0.1dB,将噪声频谱衰减 60dB。根据窗函数设计滤波器原理设计滤波器,根据滤波器指标选择合适的窗函数,计算窗函数的长度 N,调用 MATLAB函数 fir1设计一个 FIR低通滤波器。并编写程序,调用 MATLAB快速卷积函数 fftfilt实现对 xt的滤波。绘图显示滤波器的频响特性曲线、滤波器输出信号的幅频特性图和时域波形图。(3)改用等波纹最佳逼近法设计滤波
8、器,滤波器指标不变,调用 MATLAB函数 remezord和 remez设计 FIR数字滤波器。并比较两种设计方法设计的滤波器阶数和滤出来的波形效果。(4)修改程序:将步骤(2)中用窗函数设计的低通滤波器参数改为 fp=100; fs=110,单独滤出上边带频谱线,并绘制波形图,(5)修改程序:将步骤(3)中用等波纹设计的低通滤波器改为带通滤波器,单独滤出下边带频谱线,根据带通滤波器的参数选取通、阻带截止频率,带通滤波器的设计指标为:fsl=95;fpl=105; fpu=115;fsu=125;fb=fsl,fpl,fpu,fsu;m=0,1,0;dev=10(-As/20),(10(Rp
9、/20)-1)/(10(Rp/20)+1),10(-As/20)并绘制波形图。四、实验程序清单1信号产生函数 xtg程序清单function xt=xtg(N)%实验五信号 x(t)产生,并显示信号的幅频特性曲线%xt=xtg(N) 产生一个长度为 N,有加性高频噪声的单频调幅信号xt,采样频率 Fs=1000Hz%载波频率 fc=Fs/10=100Hz,调制正弦波频率 f0=fc/10=10Hz.Fs=1000;T=1/Fs;Tp=N*T;t=0:T:(N-1)*T;fc=Fs/10;f0=fc/10; %载波频率 fc=Fs/10,单频调制信号频率为 f0=Fc/10;mt=cos(2*p
10、i*f0*t); %产生单频正弦波调制信号 mt,频率为f0ct=cos(2*pi*fc*t); %产生载波正弦波信号 ct,频率为 fcxt=mt.*ct; %相乘产生单频调制信号 xtnt=2*rand(1,N)-1; %产生随机噪声 nt%设计高通滤波器 hn,用于滤除噪声 nt中的低频成分,生成高通噪声fp=150; fs=200;Rp=0.1;As=70; % 滤波器指标fb=fp,fs;m=0,1; % 计算 remezord函数所需参数 f,m,devdev=10(-As/20),(10(Rp/20)-1)/(10(Rp/20)+1);n,fo,mo,W=remezord(fb,
11、m,dev,Fs); % 确定 remez函数所需参数hn=remez(n,fo,mo,W); % 调用 remez函数进行设计,用于滤除噪声 nt中的低频成分yt=filter(hn,1,10*nt); %滤除随机噪声中低频成分,生成高通噪声 yt%=xt=xt+yt; %噪声加信号fst=fft(xt,N);k=0:N-1;f=k/Tp;subplot(2,1,1);plot(t,xt);grid;xlabel(t/s);ylabel(x(t);axis(0,Tp/5,min(xt),max(xt);title(a) 信号加噪声波形)subplot(2,1,2);plot(f,abs(fs
12、t)/max(abs(fst);grid;title(b) 信号加噪声的频谱)axis(0,Fs/2,0,1.2);xlabel(f/Hz);ylabel(幅度)2、实验程序清单%数字信号处理(第三版)学习指导第 10章实验 5程序exp5.m% FIR数字滤波器设计及软件实现clear all;close all;%调用 xtg产生信号 xt, xt长度 N=1000,并显示 xt及其频谱N=1000;xt=xtg(N);fp=120; fs=150;Rp=0.2;As=60;Fs=1000; % 输入给定指标% (1) 用窗函数法设计滤波器=wc=(fp+fs)/Fs; %理想低通滤波器截
13、止频率(关于 pi归一化)B=2*pi*(fs-fp)/Fs; %过渡带宽度指标Nb=ceil(11*pi/B); %blackman窗的长度 Nhn=fir1(Nb-1,wc,blackman(Nb);Hw=abs(fft(hn,1024); % 求设计的滤波器频率特性ywt=fftfilt(hn,xt,N); %调用函数 fftfilt对 xt滤波%以下为用窗函数法设计法的绘图部分=subplot(2,1,1); %绘制低通滤波器幅频特性曲线myplot(hn,1); title(a)低通滤波器幅频特性);subplot(2,1,2); %绘制滤除噪声后的信号波形yt=y_w(t); tp
14、lot(ywt,T,yt);title(滤除噪声后的信号波形)% (2) 用等波纹最佳逼近法设计滤波器=fb=fp,fs;m=1,0; % 确定 remezord函数所需参数 f,m,devdev=(10(Rp/20)-1)/(10(Rp/20)+1),10(-As/20);Ne,fo,mo,W=remezord(fb,m,dev,Fs); % 确定 remez函数所需参数hn=remez(Ne,fo,mo,W); % 调用 remez函数进行设计Hw=abs(fft(hn,1024); % 求设计的滤波器频率特性yet=fftfilt(hn,xt,N); % 调用函数 fftfilt对 xt
15、滤波%以下为用等波纹设计法的绘图部分=subplot(2,1,1); %绘制低通滤波器幅频特性曲线myplot(hn,1);title(a)低通滤波器幅频特性);subplot(2,1,2); %绘制滤除噪声后的信号波形yt=y_w(t);tplot(ywt,T,yt);title(滤除噪声后的信号波形)五、实验程序运行结果用窗函数法设计滤波器,滤波器长度 Nb=184。滤波器损耗函数和滤波器输出 yw(nT)分别如图 10.5.2(a)和(b)所示。用等波纹最佳逼近法设计滤波器,滤波器长度 Ne=83。滤波器损耗函数和滤波器输出 ye(nT)分别如图 10.5.2(c)和(d)所示图 10.
16、5.2图 10.5.2用窗函数法设计低通滤波器滤出上边带频谱滤波器损耗函数和滤波器输出 yw(nT)分别如图 10.5.3(a)和(b)所示。用等波纹最佳逼近法设计带通滤波器滤出下边带频谱滤波器损耗函数和滤波器输出 yw(nT)分别如图 10.5.3(c)和(d)所示。图 10.5.36、实验心得及体会1、通过本次实验我学会了调用 MATLAB函数设计和实现 FIR数字滤波器,理解了窗函数法设计 FIR数字滤波器的原理,和等波纹最佳逼近法设计 FIR数字滤波器的原理和方法。2、FIR 数字滤波器和 IIR数字滤波器的设计方法有很大差别,IIR数字滤波器的设计方法是利用模拟滤波器成熟的理论和设计图表进行设计的,只考虑了幅频特性,没考虑到相位特性,所设计的一般是某种特定的非线性相位特性。而 FIR数字滤波器在保证幅频特性满足技术要求的同时,很容易做到有严格的线性相位特性。3、窗函数法和等波纹最佳逼近法这两种方法设计的滤波器都能有效地从噪声中提取信号,用等波纹最佳逼近法设计的滤波器,其通带和阻带均为等波纹特性,且通带最大衰减和阻带最小衰减可以分别控制,所以其指标均匀分布,没有资源浪费,所以期阶数低得多,当然滤波实现的运算量以及时延也小得多,从图 10.5.2(b)和(d)可以直观地看出时延差别。