如何用matlab实现一个输入10Hz和1KHz的信号输出10Hz的数字matlab图像低通滤波器器。

用MATLAB设计FIR滤波器的方法
我的图书馆
用MATLAB设计FIR滤波器的方法
用MATLAB设计FIR滤波器的方法
摘& 要 介绍了利用MATLAB信号处理工具箱进行FIR滤波器设计的三种方法:程序设计法、FDATool设计法和SPTool设计法,给出了详细的设计步骤,并将设计的滤波器应用到一个混和正弦波信号,以验证滤波器的性能。关键词& MATLAB,数字滤波器,有限冲激响应,窗函数,仿真
1 前言&&& 数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。根据其单位冲激响应函数的时域特性可分为两类:无限冲激响应(IIR)滤波器和有限冲激响应(FIR)滤波器。与IIR滤波器相比,FIR的实现是非递归的,总是稳定的;更重要的是,FIR滤波器在满足幅频响应要求的同时,可以获得严格的线性相位特性。因此,它在高保真的信号处理,如数字音频、图像处理、数据传输、生物医学等领域得到广泛应用。
2 FIR滤波器的窗函数设计法&&& FIR滤波器的设计方法有许多种,如窗函数设计法、频率采样设计法和最优化设计法等。窗函数设计法的基本原理是用一定宽度窗函数截取无限脉冲响应序列获得有限长的脉冲响应序列,主要设计步骤为:&& (1) 通过傅里叶逆变换获得理想滤波器的单位脉冲响应hd(n)。
&&&&& (2) 由性能指标确定窗函数W(n)和窗口长度N。&&& (3) 求得实际滤波器的单位脉冲响应h(n), h(n)即为所设计FIR滤波器系数向量b(n)。&&&& &&&& (4) 检验滤波器性能。&&& 本文将针对一个含有5Hz、15Hz和30Hz的混和正弦波信号,设计一个FIR带通滤波器,给出利用MATLAB实现的三种方法:程序设计法、 FDATool设计法和SPTool设计法。参数要求:采样频率fs=100Hz,通带下限截止频率fc1=10 Hz,通带上限截止频率fc2=20 Hz,过渡带宽6 Hz,通阻带波动0.01,采用凯塞窗设计。
2& 程序设计法&&& MATLAB信号处理工具箱提供了各种窗函数、滤波器设计函数和滤波器实现函数。本文的带通滤波器设计及滤波程序如下:&&& [n,Wn,beta,ftype]=kaiserord([7 13 17 23],[0 1 0],[0.01 0.01 0.01],100);&&& %得出滤波器的阶数n=38,beta=3.4&&& w1=2*fc1/ w2=2*fc2/%将模拟滤波器的技术指标转换为数字滤波器的技术指标&&& window=kaiser(n+1,beta);%使用kaiser窗函数&&& b=fir1(n,[w1 w2],window);使用标准频率响应的加窗设计函数fir1&&& freqz(b,1,512);%数字滤波器频率响应&&& t = (0:100)/Fs;&&& s = sin(2*pi*t*5)+sin(2*pi*t*15)+sin(2*pi*t*30);%混和正弦波信号&&& sf = filter(b,1,s);%对信号s进行滤波&&& 程序执行的结果如图1所示:
&&&&&&& (1)滤波器幅频特性和相频特性&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &(2)滤波前后的波形&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 图1 滤波器特性和滤波效果图
4 FDATool设计法&&& FDATool(Filter Design & Analysis Tool)是MATLAB信号处理工具箱专用的滤波器设计分析工具,操作简单、灵活,可以采用多种方法设计FIR和IIR滤波器。在MATLAB命令窗口输入FDATool后回车就会弹出FDATool界面。4.1 带通滤波器设计&&& 已知滤波器的阶数n=38,beta=3.4。本例中,首先在Filter Type中选择Bandpass;在Design Method选项中选择FIR Window,接着在Window选项中选取Kaiser,Beta值为3.4;指定Filter Order项中的Specify order为38;采样频率Fs=100Hz,截止频率Fc1=10Hz,Fc2=20Hz。设置完以后点击窗口下方的Design Filter,在窗口上方就会看到所设计滤波器的幅频响应,通过菜单选项Analysis还可以看到滤波器的相频响应、组延迟、脉冲响应、阶跃响应、零极点配置等。设计完成后将结果保存为kaiser15.fda文件。4.2& Simulink仿真&&& 在Simulink环境下,将滤波器文件kaiser15.fda导入Digital Filter Design模块,输入信号为s(t)=sin(10πt)+sin(30πt)+sin(60πt),生成的仿真图和滤波效果如图2所示。
&& &&&&&&&&&&&&&& (1)Simulink仿真图&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& && (2)滤波前后的离散波形&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 图2 Simulink仿真图和滤波效果图
5 SPTool设计法&&& SPTool是MATLAB信号处理工具箱中自带的交互式图形用户界面工具,它包含了信号处理工具箱中的大部分函数,可以方便快捷地完成对信号、滤波器及频谱的分析、设计和浏览。在本例中按以下步骤完成滤波器的设计和滤波:创建并导入信号源。在MATLAB命令窗口输入命令:Fs=100;t = (0:100)/Fs;s = sin(2*pi*t*5)+sin(2*pi*t*15)+sin(2*pi*t*30);&&& 此时,变量Fs、t、s将显示在workspace列表中。在命令窗口键入Sptool,将弹出Sptool主界面,如图3所示;点击菜单File/Import将信号s导入并取名为s。&&& (2)单击Filters列表下的New,按照参数要求设计出滤波器filt1,具体步骤类似于3.2.1。&&& (3)将滤波器filt1应用到s信号序列。分别在Signals、Filters、Spectra列表中选择s、filt1、mtlbse,单击Filters列表下的Apply按钮,在弹出的Apply Filter对话框中将输出信号命名为sin15hz。&&& (4)进行频谱分析。在Signals中选择s,单击Spectra下的Create按钮,在弹出的Spectra Viewer界面中选择Method为FFT,Nfft=512,单击Apply按钮生成s的频谱spect1。同样的步骤可以生成信号sin15hz的频谱spect2。&&& 分别选中信号s、sin15hz、spect1、spect2,单击各自列表下方的View按钮,即可观察他们的波形,如图4所示。
&&& &&&&&&&&&&&&&&&&&&&&&&&&&&& 图3 SPTool主界面&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&& 图4 滤波前后的时域波形和频域特性&&& 由图4可以看出,带通滤波器filt1使输入信号s中频率为15hz的正弦波信号通过,而将频率为5hz和30hz的正弦波信号大大衰减。
6 结束语&&& 本文通过一个设计实例,介绍了利用MATLAB实现 FIR滤波器设计与滤波的三种方法,从仿真结果可以看出它们均可以达到技术指标要求,而且方法简单、快捷,大大减轻了工作量。滤波器的设计工作完成后,可以借助于MATLAB的export操作导出所设计滤波器的系统函数H(z)。由于MATLAB具有强大的接口功能,仿真后的结果可以很方便的移植到 DSP、CPLD或FPGA等器件中。在实际应用中,只需按要求修改滤波器参数,并对程序作较少的改动,即可实现不同截止频率的FIR滤波器,实用性较强。
参考文献:1& 董长虹等. MATLAB信号处理与应用.北京:国防工业出版社,20052& [美] M.H.海因斯 著,张建华等 译.数字信号处理.北京:科学出版社,20023& 张葛祥,李 娜. MATLAB仿真技术与应用.北京:清华大学出版社,20034& 楼顺天,李博菡.基于MATLAB的系统分析与设计.西安:西安电子科技大学出版社,1998
<FONT color=#ff多MATLAB经典教程及论文:
发表评论:
TA的最新馆藏导读:10.5实验五:FIR数字滤波器设计与软件实现,(1)掌握用窗函数法设计FIR数字滤波器的原理和方法,(2)掌握用等波纹最佳逼近法设计FIR数字滤波器的原理和方法,(3)掌握FIR滤波器的快速卷积实现原理,(4)学会调用MATLAB函数设计与实现FIR滤波器,(1)认真复习第七章中用窗函数法和等波纹最佳逼近法设计FIR数字滤波器的原理,(3)请设计低通滤波器,确定滤波器指标参数,(4)根据滤波
10.5 实验五:FIR数字滤波器设计与软件实现
10.5.1 实验指导
1.实验目的
(1)掌握用窗函数法设计FIR数字滤波器的原理和方法。
(2)掌握用等波纹最佳逼近法设计FIR数字滤波器的原理和方法。
(3)掌握FIR滤波器的快速卷积实现原理。
(4)学会调用MATLAB函数设计与实现FIR滤波器。
2. 实验内容及步骤
(1)认真复习第七章中用窗函数法和等波纹最佳逼近法设计FIR数字滤波器的原理;
(2)调用信号产生函数xtg产生具有加性噪声的信号xt,并自动显示xt及其频谱,如图10.5.1所示;
图10.5.1 具有加性噪声的信号x(t)及其频谱如图
(3)请设计低通滤波器,从高频噪声中提取xt中的单频调幅信号,要求信号幅频失真小于0.1dB,将噪声频谱衰减60dB。先观察xt的频谱,确定滤波器指标参数。
(4)根据滤波器指标选择合适的窗函数,计算窗函数的长度N,调用MATLAB函数fir1设计一个FIR低通滤波器。并编写程序,调用MATLAB快速卷积函数fftfilt实现对xt的滤波。绘图显示滤波器的频响特性曲线、滤波器输出信号的幅频特性图和时域波形图。
(4)重复(3),滤波器指标不变,但改用等波纹最佳逼近法,调用MATLAB函数remezord和remez设计FIR数字滤波器。并比较两种设计方法设计的滤波器阶数。
提示:1MATLAB函数fir1和fftfilt的功能及其调用格式请查阅本书第7章和第?章; ○
2采样频率Fs=1000Hz,采样周期T=1/Fs; ○
3根据图10.6.1(b)和实验要求,可选择滤波器指标参数:通带截止频率fp=120Hz,阻○
带截至频率fs=150Hz,换算成数字频率,通带截止频率?p?2?fp??0.24?,通带最大衰为0.1dB,阻带截至频率?s?2?fs??0.3?,阻带最小衰为60dB。]
4实验程序框图如图10.5.2所示,供读者参考。 ○
实验程序框图
(1)如果给定通带截止频率和阻带截止频率以及阻带最小衰减,如何用窗函数法设计线性相位低通滤波器?请写出设计步骤.
(2)如果要求用窗函数法设计带通滤波器,且给定通带上、下截止频率为?pl和?pu,阻带上、下截止频率为?sl和?su,试求理想带通滤波器的截止频率?cl和?cu。
(3)解释为什么对同样的技术指标,用等波纹最佳逼近法设计的滤波器阶数低?
5.实验报告要求
(1)对两种设计FIR滤波器的方法(窗函数法和等波纹最佳逼近法)进行分析比较,简述其优缺点。
(2)附程序清单、打印实验内容要求绘图显示的曲线图。
(3)分析总结实验结果。
(4)简要回答思考题。
6.信号产生函数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*pi*f0*t);
%产生单频正弦波调制信号mt,频率为f0
ct=cos(2*pi*fc*t);
%产生载波正弦波信号ct,频率为fc
%相乘产生单频调制信号xt
nt=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,dev
dev=[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+
%噪声加信号
fst=fft(xt,N);k=0:N-1;f=k/Tp;
subplot(3,1,1);plot(t,xt);xlabel(&#39;t/s&#39;);ylabel(&#39;x(t)&#39;);
axis([0,Tp/5,min(xt),max(xt)]);title(&#39;(a) 信号加噪声波形&#39;)
subplot(3,1,2);plot(f,abs(fst)/max(abs(fst)));title(&#39;(b) 信号加噪声的频谱&#39;)
axis([0,Fs/2,0,1.2]);xlabel(&#39;f/Hz&#39;);ylabel(&#39;幅度&#39;)
10.5.2 滤波器参数及实验程序清单
1、滤波器参数选取
根据10.5.1 节实验指导的提示③选择滤波器指标参数:通带截止频率fp=120Hz,阻带截至频率fs=150Hz。代入采样频率Fs=1000Hz,换算成数字频率,通带截止频率?p?2?fp??0.24?,通带最大衰为0.1dB,阻带截至频率?s?2?fs??0.3?,阻带最小衰为60dB。所以选取blackman窗函数。与信号产生函数xtg相同,采样频率Fs=1000Hz。
按照图10.5.2 所示的程序框图编写的实验程序为exp5.m。
2、实验程序清单
%《数字信号处理(第三版)学习指导》第10章实验5程序exp5.m
% FIR数字滤波器设计及软件实现
%==调用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窗的长度N
hn=fir1(Nb-1,wc,blackman(Nb));
Hw=abs(fft(hn,1024)); % 求设计的滤波器频率特性
ywt=fftfilt(hn,xt,N);
%调用函数fftfilt对xt滤波
%以下为用窗函数法设计法的绘图部分(滤波器损耗函数,滤波器输出信号波形)
%省略 % 输入给定指标
% (2) 用等波纹最佳逼近法设计滤波器
fb=[fp,fs];m=[1,0];
% 确定remezord函数所需参数f,m,dev
% 确定remez函数所需参数 dev=[(10^(Rp/20)-1)/(10^(Rp/20)+1),10^(-As/20)]; [Ne,fo,mo,W]=remezord(fb,m,dev,Fs);
hn=remez(Ne,fo,mo,W);
Hw=abs(fft(hn,1024));
% 调用remez函数进行设计 % 求设计的滤波器频率特性
yet=fftfilt(hn,xt,N);
% 调用函数fftfilt对xt滤波
%以下为用等波纹设计法的绘图部分(滤波器损耗函数,滤波器输出信号yw(nT)波形) %省略
包含总结汇报、办公文档、专业文献、应用文书、IT计算机、计划方案、旅游景点、出国留学、人文社科以及FIR数字滤波器设计与软件实现等内容。
相关内容搜索君,已阅读到文档的结尾了呢~~
信号的抽取,内插,matlab实现
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
数字滤波器及MATLAB实现
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口&#xe621; 上传我的文档
&#xe602; 下载
&#xe60c; 收藏
该文档贡献者很忙,什么也没留下。
&#xe602; 下载此文档
正在努力加载中...
数字信号处理巴特沃斯模拟低通滤波器报告
下载积分:1000
内容提示:数字信号处理巴特沃斯模拟低通滤波器报告
文档格式:DOC|
浏览次数:116|
上传日期: 09:40:15|
文档星级:&#xe60b;&#xe60b;&#xe612;&#xe612;&#xe612;
该用户还上传了这些文档
数字信号处理巴特沃斯模拟低通滤波器报告
官方公共微信}

我要回帖

更多关于 matlab低通滤波器程序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信