实验5FIR数字滤波器设计与软件实现汇总
- 格式:doc
- 大小:160.50 KB
- 文档页数:7
FIR数字滤波器设计与软件实现实验报告222 FIR数字滤波器设计与软件实现实验报告222实验标题:FIR数字滤波器设计与软件实现实验目的:1.学习FIR数字滤波器的基本原理和设计方法;2.掌握使用MATLAB软件进行FIR数字滤波器设计的方法;3.通过实验验证FIR数字滤波器的性能和效果。
实验器材与软件:1.个人计算机;2.MATLAB软件。
实验步骤:1.确定所需的滤波器类型和设计要求;2.根据设计要求选择合适的滤波器设计方法,如窗函数法、最优化方法等;3.使用MATLAB软件进行滤波器设计,并绘制滤波器的频率响应曲线;4.将设计好的滤波器用于信号处理,观察滤波效果。
实验结果与分析:1.进行实验前,首先确定滤波器的类型和设计要求。
例如,我们选择低通滤波器,要求通带频率为1kHz,阻带频率为2kHz,通带最大衰减为1dB,阻带最小衰减为60dB。
2.在MATLAB软件中,我们选择窗函数法进行滤波器设计。
根据设计要求,选择合适的窗函数,如矩形窗、汉宁窗等。
根据设计要求和窗函数的特点,确定滤波器的长度N和窗函数的参数。
3. 使用MATLAB中的fir1函数进行滤波器设计,并绘制滤波器的频率响应曲线。
根据频率响应曲线,可以分析滤波器的性能是否符合设计要求。
4. 将设计好的滤波器用于信号处理,观察滤波效果。
在MATLAB中,可以使用filter函数对信号进行滤波处理,然后绘制原始信号和滤波后的信号的时域波形和频谱图进行对比分析。
实验结论:1.通过本次实验,我们学习了FIR数字滤波器的基本原理和设计方法;2.掌握了使用MATLAB软件进行FIR数字滤波器设计的方法;3.实验结果显示,设计的FIR数字滤波器可以满足设计要求,具有良好的滤波效果。
4.FIR数字滤波器在数字信号处理中具有广泛的应用前景,对于滤除噪声、改善信号质量等方面有重要意义。
FIR数字滤波器设计与软件实现实验报告222 FIR数字滤波器设计与软件实现实验报告222实验名称:FIR数字滤波器设计与软件实现实验目的:1.了解数字滤波器的工作原理和设计方法。
2.学习使用MATLAB软件进行FIR数字滤波器的设计和实现。
实验器材:1.计算机2.MATLAB软件实验步骤:1.导入信号数据:首先,打开MATLAB软件,创建一个新的脚本文件,然后导入待滤波的信号数据。
可以通过以下代码实现:```matlabfs = 1000; % 采样频率为1000Hzt = 0:(1/fs):1; % 1秒的时间范围f1=10;%信号频率为10Hzf2=50;%信号频率为50Hzx = sin(2*pi*f1*t) + sin(2*pi*f2*t); % 生成两个正弦信号叠加```2.设计低通滤波器:使用fir1函数设计一个低通滤波器,并指定截止频率为100Hz,实现代码如下:```matlaborder = 64; % 滤波器阶数cutoff = 100; % 截止频率为100Hzb = fir1(order, cutoff/(fs/2)); % 设计低通滤波器系数```3.应用滤波器:将设计好的滤波器系数应用到信号上,实现代码如下:```matlabfiltered_signal = filter(b, 1, x); % 应用滤波器```4.绘制滤波前后的信号波形:使用plot函数分别绘制滤波前和滤波后的信号波形,实现代码如下:```matlabfigure; % 创建新的图形窗口plot(t, x);title('Original Signal'); % 设置图标题plot(t, filtered_signal);title('Filtered Signal'); % 设置图标题```5.显示滤波前后的频谱图:使用fft函数计算滤波前后信号的频谱,并使用plot函数显示频谱图,实现代码如下:```matlabfigure; % 创建新的图形窗口X = abs(fft(x)); % 计算滤波前信号的频谱f = (0:length(X)-1)*fs/length(X); % 计算频率轴的范围plot(f, X);title('Spectrum of Original Signal'); % 设置图标题filtered_X = abs(fft(filtered_signal)); % 计算滤波后信号的频谱plot(f, filtered_X);title('Spectrum of Filtered Signal'); % 设置图标题```实验结果与分析:通过实验设计的FIR数字滤波器,可以实现对输入信号的滤波功能。
数字信号处理实验报告-FIR滤波器的设计与实现在数字信号处理中,滤波技术被广泛应用于时域处理和频率域处理中,其作用是将设计信号减弱或抑制被一些不需要的信号。
根据滤波器的非线性抑制特性,基于FIR(Finite Impulse Response)滤波器的优点是稳定,易设计,可以得到较强的抑制滤波效果。
本实验分别通过MATLAB编程设计、实现、仿真以及分析了一阶低通滤波器和平坦通带滤波器。
实验步骤:第一步:设计一阶低通滤波器,通过此滤波器对波型进行滤波处理,分析其对各种频率成分的抑制效果。
为此,采用零极点线性相关算法设计滤波器,根据低通滤波器的特性,设计的低通滤波器的阶次为n=10,截止频率为0.2π,可以使设计的滤波器被称为一阶低通滤波器。
第二步:设计平坦通带滤波器。
仿真证明,采用兩個FIR濾波器組合而成的阻礙-提升系統可以實現自定義的總三值響應的設計,得到了自定義的總三值響應函數。
实验结果:1、通过MATLAB编程,设计完成了一阶低通滤波器,并通过实验仿真得到了一阶低通滤波器的频率响应曲线,证明了设计的滤波器具有良好的低通性能,截止频率为0.2π。
在该频率以下,可以有效抑制波形上的噪声。
2、设计完成平坦通带滤波器,同样分析其频率响应曲线。
从实验结果可以看出,此滤波器在此频率段内的通带性能良好,通带范围内的信号透过滤波器后,损耗较小,滞后较小,可以满足各种实际要求。
结论:本实验经过实验操作,设计的一阶低通滤波器和平坦通带滤波器具有良好的滤波特性,均已达到预期的设计目标,证明了利用非线性抑制特性实现FIR滤波处理具有较强的抑制滤波效果。
本实验既有助于深入理解FIR滤波器的设计原理,也为其他应用系统的设计和开发提供了指导,进而提高信号的处理水平和质量。
fir数字滤波器设计与软件实现数字信号处理实验原理FIR数字滤波器设计的基本原理是从理想滤波器的频率响应出发,寻找一个系统函数,使其频率响应尽可能逼近滤波器要求的理想频率响应。
为了实现这一目标,通常会采用窗函数法进行设计。
这种方法的基本思想是,将理想滤波器的无限长单位脉冲响应截断为有限长因果序列,并用合适的窗函数进行加权,从而得到FIR滤波器的单位脉冲响应。
在选择窗函数时,需要考虑其频率响应和幅度响应。
常见的窗函数包括矩形窗、三角形窗、汉宁窗、汉明窗、布莱克曼窗和凯泽窗等。
每种窗函数都有其特定的特性,如主瓣宽度、旁瓣衰减等。
根据实际需求,可以选择合适的窗函数以优化滤波器的性能。
在软件实现上,可以使用各种编程语言和信号处理库进行FIR滤波器的设计和实现。
例如,在MATLAB中,可以使用内置的`fir1`函数来设计FIR滤波器。
该函数可以根据指定的滤波器长度N和采样频率Fs,自动选择合适的窗函数并计算滤波器的系数。
然后,可以使用快速卷积函数`fftfilt`对输入信号进行滤波处理。
此外,还可以使用等波纹最佳逼近法来设计FIR数字滤波器。
这种方法的目标是找到一个最接近理想滤波器频率响应的实数序列,使得在所有可能的实
数序列中,该序列的误差平方和最小。
通过优化算法,可以找到这个最优序列,从而得到性能更优的FIR滤波器。
总的来说,FIR数字滤波器设计与软件实现数字信号处理实验原理是基于对理想滤波器频率响应的逼近和优化,通过选择合适的窗函数和算法,实现信号的滤波处理。
实验五FIR数字滤波器的设计
FIR数字滤波器的设计可以分为以下几个步骤:
1.确定滤波器的类型和规格:根据实际需求确定滤波器的类型(如低通、高通、带通等)以及滤波器的截止频率、通带衰减以及阻带衰减等规格。
2.选择滤波器的窗函数:根据滤波器的规格,选择合适的窗函数(如矩形窗、汉宁窗、布莱克曼窗等)。
窗函数的选择会影响滤波器的频率响应以及滤波器的过渡带宽度等特性。
3.确定滤波器的阶数:根据滤波器的规格和窗函数的选择,确定滤波器的阶数。
通常来说,滤波器的阶数越高,滤波器的性能越好,但相应的计算和处理也会更加复杂。
4.设计滤波器的频率响应:通过在频率域中设计滤波器的频率响应来满足滤波器的规格要求。
可以使用频率采样法、窗函数法或优化算法等方法。
5. 将频率响应转换为差分方程:通过逆Fourier变换或其他变换方法,将频率响应转换为滤波器的差分方程表示。
6.量化滤波器的系数:将差分方程中的连续系数离散化为滤波器的实际系数。
7.实现滤波器:使用计算机编程、数字信号处理芯片或FPGA等方式实现滤波器的功能。
8.测试滤波器性能:通过输入一组测试信号并观察输出信号,来验证滤波器的性能是否符合设计要求。
需要注意的是,FIR数字滤波器的设计涉及到频率域和时域的转换,以及滤波器系数的选择和调整等过程,需要一定的信号处理和数学背景知识。
物理与电子信息工程学院实验报告实验课程名称:数字信号处理实验名称:FIR数字滤波器设计与软件实现班级:1012341姓名:严娅学号:101234153成绩:_______实验时间:2012年12月20 日一、实验目的(1)掌握用窗函数法设计FIR 数字滤波器的原理和方法。
(2)掌握用等波纹最佳逼近法设计FIR 数字滤波器的原理和方法。
(3)掌握FIR 滤波器的快速卷积实现原理。
(4)学会调用MATLAB 函数设计与实现FIR 滤波器。
二、实验原理1、用窗函数法设计FIR 数字滤波器的原理和方法。
如果所希望的滤波器的理想频率响应函数为 )(ωj d e H ,则其对应的单位脉冲响应为)(n h d =π21ωωωππd e e H j j d )(⎰- (2-1)窗函数设计法的基本原理是用有限长单位脉冲响应序列)(n h 逼近)(n h d 。
由于)(n h d 往往是无限长序列,且是非因果的,所以用窗函数)(n ω将)(n h d 截断,并进行加权处理,得到:)(n h =)(n h d )(n ω (2-2))(n h 就作为实际设计的FIR 数字滤波器的单位脉冲响应序列,其频率响应函数)(ωj d e H 为:)(ωj d e H =∑-=-1)(N n j e n h ω (2-3) 式中,N 为所选窗函数)(n ω的长度。
由第七章可知,用窗函数法设计的滤波器性能取决于窗函数)(n ω的类型及窗口长度N 的取值。
设计过程中,要根据对阻带最小衰减和过渡带宽度的要求选择合适的窗函数类型和窗口长度N 。
各种类型的窗函数可达到的阻带最小衰减和过渡带宽度见第七章。
这样选定窗函数类型和长度N 后,求出单位脉冲响应)(n h =)(n h d ·)(n ω,并按式(2-3)求出)(ωj e H 。
)(ωj e H 是否满足要求,要进行验算。
一般在)(n h 尾部加零使长度满足于2的整数次幂,以便用FFT 计算)(ωj e H 。
fir滤波器设计实验报告一、实验目的本次实验的目的是设计FIR滤波器,从而实现信号的滤波处理。
二、实验原理FIR滤波器是一种数字滤波器,它采用有限长的冲激响应滤波器来实现频率选择性的滤波处理。
在FIR滤波器中,系统的输出只与输入和滤波器的系数有关,不存在反馈环路,因此具有稳定性和线性相位的特性。
FIR滤波器的设计最常采用Window法和最小二乘法。
Window法是指先对理想滤波器的频率特性进行窗函数的处理,再通过离散傅里叶变换来得到滤波器的时域响应。
最小二乘法则是指采用最小二乘法来拟合理想滤波器的频率特性。
本次实验采用的是Window法。
三、实验步骤1.设计滤波器的频率响应特性:根据实际需要设计出需要的滤波器的频率响应特性,通常采用理想滤波器的底通、高通、带通、带阻等特性。
2.选择窗函数:根据设计的滤波器的频率响应特性选择相应的窗函数,常用的窗函数有矩形窗、汉宁窗、汉明窗等。
3.计算滤波器的时域响应:采用离散傅里叶变换将设计的滤波器的频率响应特性转化为时域响应,得到滤波器的冲激响应h(n)。
4.归一化:将得到的滤波器的冲激响应h(n)进行归一化处理,得到单位加权的滤波器系数h(n)。
5.实现滤波器的应用:将得到的滤波器系数h(n)应用于需要滤波的信号中,通过卷积的方式得到滤波后的信号。
四、实验结果以矩形窗为例,设计一阶低通滤波器,截止频率为300Hz,采样频率为8000Hz,得到的滤波器系数为:h(0)=0.0025h(1)=0.0025滤波效果良好,经过滤波后的信号频率响应相对于滤波前有较明显的截止效应。
五、实验总结通过本次实验,我们掌握了FIR滤波器的设计方法,窗函数的选择和离散傅里叶变换的应用,使我们能够更好地处理信号,实现更有效的信号滤波。
在日常工作和学习中,能够更好地应用到FIR滤波器的设计和应用,提高信号处理的精度和效率。
实验二 FIR 数字滤波器设计与软件实现1.实验目的(1)掌握用窗函数法设计FIR 数字滤波器的原理和方法。
(2)掌握用等波纹最佳逼近法设计FIR 数字滤波器的原理和方法。
(3)掌握FIR 滤波器的快速卷积实现原理。
(4)学会调用MATLAB 函数设计与实现FIR 滤波器。
2. 两种设计FIR 滤波器的方法比较窗函数法简单方便,易于实现。
但存在以下缺点:滤波器边界频率不易精确控制。
窗函数法总使通带和阻带波纹幅度相等,不能分别控制通带和阻带波纹幅度。
所设计的滤波器在阻带边界频率附近的衰减最小,距阻带边界频率越远,衰减越大。
,所以如果在阻带边界频率附近的衰减刚好达到设计指标要求,则阻带中其他频段的衰减就有很大富余量,存在较大的资源浪费。
等波纹最佳逼近法是一种优化设计方法,克服了窗函数法的缺点,使最大误差最小化,并在整个逼近频段上均匀分布。
用等波纹最佳逼近法设计的FIR 数字滤波器的幅频响应在通带和阻带都是等波纹的,而且可以分别控制通带和阻带波纹幅度。
与窗函数法相比,由于这种设计法使最大误差均匀分布,所以设计的滤波器性能价格比最高。
阶数相同时,这种设计方法使滤波器的最大逼近误差最小,即通带最大衰减最小,阻带最小衰减最大。
指标相同时,这种设计法使滤波器阶数最低。
3. 滤波器参数及实验程序清单(1) 滤波器参数选取根据加噪信号频谱图和实验要求,可选择一低通滤波器进行滤波,确定滤波器指标参数:通带截止频率Hz f p 130=,阻带截至频率Hz f s 150=,换算成数字频率,通带截止频率ππω26.02==T f p p ,通带最大衰减为dB p 1.0=α,阻带截至频率ππω3.02==T f s s ,阻带最小衰减为dB s 60=α。
(2) 实验程序清单 图1 程序流程图信号产生函数xtg 程序清单function xt=xtg%产生一个长度为N,有加性高频噪声的单频调幅信号xt,采样频率Fs=1000Hz %载波频率fc=Fs/10=100Hz,调制正弦波频率f0=fc/10=10Hz.N=1600;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*pi*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,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;figure(1);subplot(2,1,1);plot(t,xt);grid;xlabel('t/s');ylabel('x(t)');axis([0,Tp/4,min(xt),max(xt)]);title('信号加噪声波形');subplot(2,1,2);plot(f,abs(fst)/max(abs(fst)));grid;title('信号加噪声的频谱');axis([0,Fs/2,0,1.2]);xlabel('f/Hz');ylabel('幅度');FIR数字滤波器设计及软件实现程序清单clear all;close allxt=xtg; %调用xtg产生信号xt, xt长度N=1600,并显示xt及其频谱fp=130;fs=150;Rp=0.1;As=60;Fs=1000; % 输入给定指标%用窗函数法设计滤波器wc=(fp+fs)/Fs; %理想低通滤波器截止频率(关于pi归一化)B=2*pi*(fs-fp)/Fs;Nb=ceil(11*pi/B);hn=fir1(Nb-1,wc,blackman(Nb));y1t=fftfilt(hn,xt,1600); %调用函数fftfilt对xt滤波figure(2);t=0:0.001:1.599; %绘制滤波后的信号时域波形图subplot(2,1,1);plot(t,y1t);grid;xlabel('t/s');ylabel('y_1(t)');title('滤波后的y_1(t)的波形');axis([0 0.5 -1 1]);subplot(2,1,2);[h w]=freqz(hn); %绘制低通滤波器的损耗函数曲线plot(w/pi,20*log10(abs(h)));grid;xlabel('ω/π');ylabel('幅度(dB )');title('窗函数法低通滤波器的损耗函数曲线');axis([0 1 -120 5]);%用等波纹最佳逼近法设计滤波器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 函数进行设计y2t=fftfilt(hn,xt,1600); %调用函数fftfilt 对xt 滤波figure(3);t=0:0.001:1.599; %绘制滤波后的信号时域波形图subplot(2,1,1);plot(t,y2t);grid;xlabel('t/s');ylabel('y_2(t)');title('滤波后的y_2(t)的波形');axis([0 0.5 -1 1]);subplot(2,1,2);[h w]=freqz(hn); %绘制低通滤波器的损耗函数曲线plot(w/pi,20*log10(abs(h)));grid;xlabel('ω/π');ylabel('幅度(dB )');title('等波纹逼近法低通滤波器的损耗函数曲线');axis([0 1 -80 5]);4. 实验结果在matlab 中键入以上程序,得到的仿真结果如下图2 具有加性噪声的信号x(t)及其频谱图3 窗函数法设计的滤波器损耗函数曲线及其滤波后的信号)(1t y图4 等波纹逼近法设计的滤波器损耗函数曲线及其滤波后的信号)(2t y由上述实验结果可见用窗函数法设计滤波器,滤波器长度 Nb=184。
FIR数字滤波器设计与软件实现实验报告222 FIR数字滤波器设计与软件实现实验报告222实验报告标题:FIR数字滤波器设计与软件实现实验目的:1.掌握FIR数字滤波器的设计原理;2.学会使用软件进行FIR数字滤波器设计;3.实现FIR数字滤波器的软件仿真。
实验材料与设备:1.计算机;2.FIR滤波器设计软件。
实验原理:FIR(Finite Impulse Response)数字滤波器是一种线性时不变滤波器,具有无穷冲击响应长度。
其传递函数表达式为:H(z)=b0+b1*z^(-1)+b2*z^(-2)+...+bM*z^(-M)其中,H(z)为滤波器的传递函数,z为z变换的复数变量,b0,b1,...,bM为滤波器的系数,M为滤波器的阶数。
FIR滤波器的设计包括理想滤波器的设计和窗函数法的设计两种方法。
本实验使用窗函数法进行FIR滤波器的设计。
窗函数法的步骤如下:1.确定滤波器的阶数M;2.设计理想低通滤波器的频率响应Hd(w);3.根据滤波器的截止频率选择合适的窗函数W(n);4.计算滤波器的单位脉冲响应h(n);5.调整滤波器的单位脉冲响应h(n)的幅度;6.得到滤波器的系数b0,b1,...,bM。
实验步骤:1.在计算机上安装并打开FIR滤波器设计软件;2.根据实验要求选择窗函数法进行FIR滤波器的设计;3.输入滤波器的阶数M和截止频率,选择合适的窗函数;4.运行软件进行滤波器设计,得到滤波器的系数;5.使用软件进行FIR滤波器的软件仿真。
实验结果:经过软件仿真,得到了FIR数字滤波器的单位脉冲响应和频率响应曲线,满足设计要求。
滤波器的阶数和截止频率对滤波器的响应曲线有一定影响。
通过调整滤波器阶数和截止频率,可以得到不同的滤波效果。
实验结论:本实验通过窗函数法进行FIR数字滤波器的设计,并通过软件进行了仿真。
实验结果表明,FIR数字滤波器具有良好的滤波效果,可以用于信号处理和通信系统中的滤波需求。
信息院14电信(师范)实验五:FIR数字滤波器设计与软件实现一、实验指导1.实验目的(1)掌握用窗函数法设计FIR数字滤波器的原理和方法。
(2)掌握用等波纹最佳逼近法设计FIR数字滤波器的原理和方法。
(3)掌握FIR滤波器的快速卷积实现原理。
(4)学会调用MATLAB函数设计与实现FIR滤波器。
2.实验内容及步骤(1)认真复习第七章中用窗函数法和等波纹最佳逼近法设计FIR数字滤波器的原理;(2)调用信号产生函数xtg产生具有加性噪声的信号xt,并自动显示xt及其频谱,如图1所示;图1 具有加性噪声的信号x(t)及其频谱如图程序代码:(信号产生函数xtg程序清单)function xt=xtg(N)%ʵÑéÎåÐźÅx(t)²úÉú,²¢ÏÔʾÐźŵķùÆµÌØÐÔÇúÏß%xt=xtg(N)²úÉúÒ»¸ö³¤¶ÈΪN,ÓмÓÐÔ¸ßÆµÔëÉùµÄµ¥Æµµ÷·ùÐźÅxt,²ÉÑùƵÂÊFs=1000Hz%ÔØ²¨ÆµÂÊfc=Fs/10=100Hz,µ÷ÖÆÕýÏÒ²¨ÆµÂÊf0=fc/10=10Hz.N=1000;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*pi*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,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(3,1,1);plot(t,xt);grid;xlabel('t/s');ylabel('x(t)');axis([0,Tp/5,min(xt),max(xt)]);title('(a) ÐźżÓÔëÉù²¨ÐÎ')subplot(3,1,2);plot(f,abs(fst)/max(abs(fst)));grid;title('(b)ÐźżÓÔëÉùµÄƵÆ×')axis([0,Fs/2,0,1.2]);xlabel('f/Hz');ylabel('·ù¶È')输出波形:(3)请设计低通滤波器,从高频噪声中提取xt中的单频调幅信号,要求信号幅频失真小于0.1dB,将噪声频谱衰减60dB。
信息院14电信(师范)实验五:FIR数字滤波器设计与软件实现一、实验指导1.实验目的(1)掌握用窗函数法设计FIR数字滤波器的原理和方法。
(2)掌握用等波纹最佳逼近法设计FIR数字滤波器的原理和方法。
(3)掌握FIR滤波器的快速卷积实现原理。
(4)学会调用MATLAB函数设计与实现FIR滤波器。
2.实验内容及步骤(1)认真复习第七章中用窗函数法和等波纹最佳逼近法设计FIR数字滤波器的原理;(2)调用信号产生函数xtg产生具有加性噪声的信号xt,并自动显示xt及其频谱,如图1所示;图1 具有加性噪声的信号x(t)及其频谱如图程序代码:(信号产生函数xtg程序清单)function xt=xtg(N)%ʵÑéÎåÐźÅx(t)²úÉú,²¢ÏÔʾÐźŵķùÆµÌØÐÔÇúÏß%xt=xtg(N)²úÉúÒ»¸ö³¤¶ÈΪN,ÓмÓÐÔ¸ßÆµÔëÉùµÄµ¥Æµµ÷·ùÐźÅxt,²ÉÑùƵÂÊFs=1000Hz%ÔØ²¨ÆµÂÊfc=Fs/10=100Hz,µ÷ÖÆÕýÏÒ²¨ÆµÂÊf0=fc/10=10Hz.N=1000;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*pi*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,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(3,1,1);plot(t,xt);grid;xlabel('t/s');ylabel('x(t)');axis([0,Tp/5,min(xt),max(xt)]);title('(a) ÐźżÓÔëÉù²¨ÐÎ')subplot(3,1,2);plot(f,abs(fst)/max(abs(fst)));grid;title('(b)ÐźżÓÔëÉùµÄƵÆ×')axis([0,Fs/2,0,1.2]);xlabel('f/Hz');ylabel('·ù¶È')输出波形:(3)请设计低通滤波器,从高频噪声中提取xt中的单频调幅信号,要求信号幅频失真小于0.1dB,将噪声频谱衰减60dB。
先观察xt的频谱,确定滤波器指标参数。
(4)根据滤波器指标选择合适的窗函数,计算窗函数的长度N,调用MATLAB函数fir1设计一个FIR低通滤波器。
并编写程序,调用MATLAB快速卷积函数fftfilt实现对xt的滤波。
绘图显示滤波器的频响特性曲线、滤波器输出信号的幅频特性图和时域波形图。
(3)(4)的程序:% 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; %ÀíÏëµÍͨÂ˲¨Æ÷½ØÖ¹ÆµÂÊ(¹ØÓÚ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Â˲¨%ÒÔÏÂΪÓô°º¯Êý·¨Éè¼Æ·¨µÄ»æÍ¼²¿·Ö£¨Â˲¨Æ÷ËðºÄº¯Êý£¬Â˲¨Æ÷Êä³öÐźŲ¨ÐÎ)f=[0:1023]*Fs/1024;figure(2)subplot(2,1,1)plot(f,20*log10(Hw/max(Hw)));grid;title('(a)µÍͨÂ˲¨Æ÷·ùÆµÌØÐÔ')axis([0,Fs/2,-120,20]);xlabel('f/Hz');ylabel('·ù¶È')t=[0:N-1]/Fs;Tp=N/Fs;subplot(2,1,2)plot(t,ywt);grid;axis([0,Tp/2,-1,1]);xlabel('t/s');ylabel('y_w(t)');title('(b) Â˳ýÔëÉùºóµÄÐźŲ¨ÐÎ')% (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Â˲¨%ÒÔÏÂΪÓõȲ¨ÎÆÉè¼Æ·¨µÄ»æÍ¼²¿·Ö£¨Â˲¨Æ÷ËðºÄº¯Êý£¬Â˲¨Æ÷Êä³öÐźŲ¨ÐÎ)figure(3);subplot(2,1,1)f=[0:1023]*Fs/1024;plot(f,20*log10(Hw/max(Hw)));grid;title('(c)µÍͨÂ˲¨Æ÷·ùÆµÌØÐÔ')axis([0,Fs/2,-80,10]);xlabel('f/Hz');ylabel('·ù¶È')subplot(2,1,2);plot(t,yet);grid;axis([0,Tp/2,-1,1]);xlabel('t/s');ylabel('y_e(t)');title('(d) Â˳ýÔëÉùºóµÄÐźŲ¨ÐÎ')(5)重复(3),滤波器指标不变,但改用等波纹最佳逼近法,调用MATLAB函数remezord和remez设计FIR数字滤波器。