matlab滤波器程序文档格式.docx
《matlab滤波器程序文档格式.docx》由会员分享,可在线阅读,更多相关《matlab滤波器程序文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
[mag2,rad]=freqz(h2);
[mag3,rad]=freqz(h3);
[mag4,rad]=freqz(h4);
[mag5,rad]=freqz(h5);
[mag6,rad]=freqz(h6);
[mag7,rad]=freqz(h7);
[mag8,rad]=freqz(h8);
figure
(1);
%画幅频特性曲线
plot(rad,20*log10(abs(mag1)));
xlabel('
NormalizedFrequency(rad)'
);
ylabel('
NormaliaedMagnitude(dB)'
axis([0,3,-80,0]);
title('
利用矩形窗设计的数字滤波器'
gridon;
figure
(2);
plot(rad,20*log10(abs(mag2)));
利用三角窗设计的数字滤波器'
figure(3);
plot(rad,20*log10(abs(mag3)));
利用海明设计的数字滤波器'
figure(4);
plot(rad,20*log10(abs(mag4)));
利用汉宁窗设计的数字滤波器'
figure(5);
plot(rad,20*log10(abs(mag5)));
利用巴特里特窗设计的数字滤波器'
figure(6);
plot(rad,20*log10(abs(mag6)));
axis([0,3,-100,0]);
利用布拉克曼窗设计的数字滤波器'
figure(7);
plot(rad,20*log10(abs(mag7)));
利用切比雪夫窗设计的数字滤波器'
figure(8);
plot(rad,20*log10(abs(mag8)));
利用凯塞窗设计的数字滤波器'
MATLAB参考程序和仿真内容
%*******************************************************************%
%mode:
1--巴特沃斯低通;
2--巴特沃斯高通;
3--巴特沃斯带通;
4--巴特沃斯带阻
%5--契比雪夫低通;
6--契比雪夫高通;
7--契比雪夫带通;
8--契比雪夫带阻
%fp1,fp2:
通带截止频率,当高通或低通时只有fp1有效
%fs1,fs2:
阻带截止频率,当高通或低通时只有fs1有效
%rp:
通带波纹系数
%as:
阻带衰减系数
%sample:
采样率
%h:
返回设计好的滤波器系数
function[b,a]=iirfilt(mode,fp1,fp2,fs1,fs2,rp,as,sample)
wp1=2*fp1/sample;
wp2=2*fp2/sample;
ws1=2*fs1/sample;
ws2=2*fs2/sample;
%得到巴特沃斯滤波器的最小阶数N和3bd频率wn
ifmode<
3[N,wn]=buttord(wp1,ws1,rp,as);
elseifmode<
5[N,wn]=buttord([wp1wp2],[ws1ws2],rp,as);
%得到契比雪夫滤波器的最小阶数N和3bd频率wn
7[N,wn]=cheb1ord(wp1,ws1,rp,as);
else[N,wn]=cheblord([wp1wp2],[ws1ws2],rp,as);
end
%得到滤波器系数的分子b和分母a
ifmode==1[b,a]=butter(N,wn);
ifmode==2[b,a]=butter(N,wn,/high/);
ifmode==3[b,a]=butter(N,wn);
ifmode==4[b,a]=butter(N,wn,/stop/);
ifmode==5[b,a]=cheby1(N,rp,wn);
ifmode==6[b,a]=cheby1(N,rp,wn,/high/);
ifmode==7[b,a]=cheby1(N,rp,wn);
ifmode==8[b,a]=cheby1(N,rp,wn,/stop/);
set(gcf,/menubar/,menubar);
freq_response=freqz(b,a);
magnitude=20*log10(abs(freq_response));
m=0:
511;
f=m*sample/(2*511);
subplot(3,1,1);
plot(f,magnitude);
grid;
%幅频特性
axis([0sample/21.1*min(magnitude)1.1*max(magnitude)]);
Magnitude'
Frequency-->
'
phase=angle(freq_response);
subplot(3,1,2);
plot(f,phase);
%相频特性
axis([0sample/21.1*min(phase)1.1*max(phase)]);
Phase'
h=impz(b,a,32);
%32点的单位函数响应
t=1:
32;
subplot(3,1,3);
stem(t,h);
axis([0321.2*min(h)1.1*max(h)]);
h(n)'
n-->
基于MATLAB信号处理工具箱的数字滤波器设计与仿真
摘要:
传统的数字滤波器的设计过程复杂,计算工作量大,滤波特性调整困难,影响了它的应用。
本文介绍了一种利用matlab信号处理工具箱(signalprocessingtoolbox)快速有效的设计由软件组成的常规数字滤波器的设计方法。
给出了使用matlab语言进行程序设计和利用信号处理工具箱的fdatool工具进行界面设计的详细步骤。
利用matlab设计滤波器,可以随时对比设计要求和滤波器特性调整参数,直观简便,极大的减轻了工作量,有利于滤波器设计的最优化。
本文还介绍了如何利用matlab环境下的仿真软件simulink对所设计的滤波器进行模拟仿真。
关键词:
数字滤波器matlabfiriir
引言:
在电力系统微机保护和二次控制中,很多信号的处理与分析都是基于对正弦基波和某些整次谐波的分析,而系统电压电流信号(尤其是故障瞬变过程)中混有各种复杂成分,所以滤波器一直是电力系统二次装置的关键部件【1】。
目前微机保护和二次信号处理软件主要采用数字滤波器。
传统的数字滤波器设计使用繁琐的公式计算,改变参数后需要重新计算,在设计滤波器尤其是高阶滤波器时工作量很大。
利用matlab信号处理工具箱(signalprocessingtoolbox)可以快速有效的实现数字滤波器的设计与仿真。
1数字滤波器及传统设计方法
数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。
数字滤波器有多种分类,根据数字滤波器冲激响应的时域特征,可将数字滤波器分为两种,即无限长冲激响应(iir)滤波器和有限长冲激响应(fir)滤波器。
iir数字滤波器具有无限宽的冲激响应,与模拟滤波器相匹配。
所以iir滤波器的设计可以采取在模拟滤波器设计的基础上进一步变换的方法。
fir数字滤波器的单位脉冲响应是有限长序列。
它的设计问题实质上是确定能满足所要求的转移序列或脉冲响应的常数问题,设计方法主要有窗函数法、频率采样法和等波纹最佳逼近法等。
在对滤波器实际设计时,整个过程的运算量是很大的。
例如利用窗函数法【2】设计m阶fir低通滤波器时,首先要根据
(1)式计算出理想低通滤波器的单位冲激响应序列
,然后根据
(2)式计算出m个滤波器系数
。
当滤波器阶数比较高时,计算量比较大,设计过程中改变参数或滤波器类型时都要重新计算。
(1)
(2)
设计完成后对已设计的滤波器的频率响应要进行校核,要得到幅频相频响应特性,运算量也是很大的。
我们平时所要设计的数字滤波器,阶数和类型并不一定是完全给定的,很多时候都是要根据设计要求和滤波效果不断的调整,以达到设计的最优化。
在这种情况下,滤波器的设计就要进行大量复杂的运算,单纯的靠公式计算和编制简单的程序很难在短时间内完成设计。
利用matlab强大的计算功能进行计算机辅助设计,可以快速有效的设计数字滤波器,大大的简化了计算量,直观简便。
2数字滤波器的matlab设计
2.1
fdatool界面设计
2.1.1
fdatool的介绍
fdatool(filterdesign&
analysistool)是matlab信号处理工具箱里专用的滤波器设计分析工具,matlab6.0以上的版本还专门增加了滤波器设计工具箱(filterdesigntoolbox)。
fdatool可以设计几乎所有的基本的常规滤波器,包括fir和iir的各种设计方法。
它操作简单,方便灵活。
fdatool界面总共分两大部分,一部分是designfilter,在界面的下半部,用来设置滤波器的设计参数,另一部分则是特性区,在界面的上半部分,用来显示滤波器的各种特性。
designfilter部分主要分为:
filtertype(滤波器类型)选项,包括lowpass(低通)、highpass(高通)、bandpass(带通)、bandstop(带阻)和特殊的fir滤波器。
designmethod(设计方法)选项,包括iir滤波器的butterworth(巴特沃思)法、chebyshevtypei(切比雪夫i型)法、chebyshevtypeii(切比雪夫ii型)法、elliptic(椭圆滤波器)法和fir滤波器的equiripple法、least-squares(最小乘方)法、window(窗函数)法。
filterorder(滤波器阶数)选项,定义滤波器的阶数,包括specifyorder(指定阶数)和minimumorder(最小阶数)。
在specifyorder中填入所要设计的滤波器的阶数(n阶滤波器,specifyorder=n-1),如果选择minimumorder则matlab根据所选择的滤波器类型自动使用最小阶数。
frenquencyspecifications选项,可以详细定义频带的各参数,包括采样频率fs和频带的截止频率。
它的具体选项由filtertype选项和designmethod选项决定,例如bandpass(带通)滤波器需要定义fstop1(下阻带截止频率)、fpass1(通带下限截止频率)、fpass2(通带上限截止频率)、fstop2(上阻带截止频率),而lowpass(低通)滤波器只需要定义fstop1、fpass1。
采用窗函数设计滤波器时,由于过渡带是由窗函数的类型和阶数所决定的,所以只需要定义通带截止频率,而不必定义阻带参数。
magnitudespecifications选项,可以定义幅值衰减的情况。
例如设计带通滤波器时,可以定义wstop1(频率fstop1处的幅值衰减)、wpass(通带范围内的幅值衰减)、wstop2(频率fstop2处的幅值衰减)。
当采用窗函数设计时,通带截止频率处的幅值衰减固定为6db,所以不必定义。
windowspecifications选项,当选取采用窗函数设计时,该选项可定义,它包含了各种窗函数。
2.1.2
带通滤波器设计实例
本文将以一个fir滤波器的设计为例来说明如何使用matlab设计数字滤波器:
在小电流接地系统中注入83.3hz的正弦信号,对其进行跟踪分析,要求设计一带通数字滤波器,滤除工频及整次谐波,以便在非常复杂的信号中分离出该注入信号。
参数要求:
96阶fir数字滤波器,采样频率1000hz,采用hamming窗函数设计。
本例中,首先在filtertype中选择bandpass(带通滤波器);
在designmethod选项中选择firwindow(fir滤波器窗函数法),接着在windowspecifications选项中选取hamming;
指定filterorder项中的specifyorder=95;
由于采用窗函数法设计,只要给出通带下限截止频率fc1和通带上限截止频率fc2,选取fc1=70hz,fc2=84hz。
设置完以后点击designfilter即可得到所设计的fir滤波器。
通过菜单选项analysis可以在特性区看到所设计滤波器的幅频响应、相频响应、零极点配置和滤波器系数等各种特性。
设计完成后将结果保存为1.fda文件。
在设计过程中,可以对比滤波器幅频相频特性和设计要求,随时调整参数和滤波器类型,
以便得到最佳效果。
其它类型的fir滤波器和iir滤波器也都可以使用fdatool来设计。
图1滤波器幅频和相频响应(特性区)
fig.1magnituderesponseandphaseresponseofthefilter
2.2程序设计法
在matlab中,对各种滤波器的设计都有相应的计算振幅响应的函数【3】,可以用来做滤波器的程序设计。
上例的带通滤波器可以用程序设计:
c=95;
%定义滤波器阶数96阶
w1=2*pi*fc1/fs;
w2=2*pi*fc2/fs;
%参数转换,将模拟滤波器的技术指标转换为数字滤波器的技术指标
window=hamming(c+1);
%使用hamming窗函数
h=fir1(c,[w1/piw2/pi],window);
%使用标准响应的加窗设计函数fir1
freqz(h,1,512);
%数字滤波器频率响应
在matlab环境下运行该程序即可得到滤波器幅频相频响应曲线和滤波器系数h。
篇幅所限,这里不再将源程序详细列出。
3
simulink仿真
本文通过调用simulink中的功能模块构成数字滤波器的仿真框图,在仿真过程中,可以双击各功能模块,随时改变参数,获得不同状态下的仿真结果。
例如构造以基波为主的原始信号
,
,通过simulink环境下的digitalfilterdesign(数字滤波器设计)模块导入2.1.2中fdatool所设计的滤波器文件1.fda。
仿真图和滤波效果图如图2所示。
图2simulink仿真图及滤波效果图
fig.2simulatedconnectionsandwaveform
可以看到经过离散采样、数字滤波后分离出了83.3hz的频率分量(scope1)。
之所以选取上面的叠加信号
作为原始信号,是由于在实际工作中是要对已经经过差分滤波的信号进一步做带通滤波,信号的各分量基本同
一致,可以反映实际的情况。
本例设计的滤波器已在实际工作中应用,取得了不错的效果。
4
结论
利用matlab的强大运算功能,基于matlab信号处理工具箱(signalprocessingtoolbox)的数字滤波器设计法可以快速有效的设计由软件组成的常规数字滤波器,设计方便、快捷,极大的减轻了工作量。
在设计过程中可以对比滤波器特性,随时更改参数,以达到滤波器设计的最优化。
利用matlab设计数字滤波器在电力系统二次信号处理软件和微机保护中,有着广泛的应用前景。
设计巴特沃斯滤波器的MATLAB函数
2009-05-0921:
12
1.buttord
(1)[N,wc]=buttord(wp,ws,αp,αs)
用于计算巴特沃斯数字滤波器的阶数N和3dB截止频率wc。
调用参数wp,ws分别为数字滤波器的通带、阻带截止频率的归一化值,要求:
0≤wp≤1,0≤ws≤1。
1表示数字频率pi。
αp,αs分别为通带最大衰减和组带最小衰减(dB)。
当ws≤wp时,为高通滤波器;
当wp和ws为二元矢量时,为带通或带阻滤波器,这时wc也是二元向量。
N,wc作为butter函数的调用参数。
(2)[N,Ωc]=buttord(Ωp,Ωs,αp,αs,‘s’)
用于计算巴特沃斯模拟滤波器的阶数N和3dB截止频率Ωc。
Ωp,Ωs,Ωc均为实际模拟角频率。
说明:
buttord函数使用阻带指标计算3dB截止频率,这样阻带会刚好满足要求,而通带会有富余。
2.buttap(N)
[z0,p0,k0]=buttap(N)
用于计算N阶巴特沃斯归一化(3dB截止频率Ωc=1)模拟低通原型滤波器系统函数的零、极点和增益因子。
如果要从零、极点模型得到系统函数的分子、分母多项式系数向量ba、aa,可调用
[B,A]=zp2tf(z0,p0,k0)
3.butter
(1)[b,a]=butter(N,wc,‘ftype’)
计算N阶巴特沃斯数字滤波器系统函数分子、分母多项式的系数向量b、a。
调用参数N和wc分别为巴特沃斯数字滤波器的阶数和3dB截止频率的归一化值(关于pi归一化),一般是调用buttord
(1)格式计算N和wc。
系数b、a是按照z-1的升幂排列。
(2)[B,A]=butter(N,Ωc,‘ftype’,‘s’)
计算巴特沃斯模拟滤波器系统函数的分子、分母多项式系数向量ba、aa。
调用参数N和Ωc分别为巴特沃斯模拟滤波器的阶数和3dB截止频率(实际角频率),可调用buttord
(2)格式计算N和Ωc。
系数B、A按s的正降幂排列。
tfype为滤波器的类型:
◇ftype=high时,高通;
Ωc只有1个值。
◇ftype=stop时,带阻阻;
此时Ωc=[Ωcl,Ωcu],分别为带阻滤波器的通带3dB下截止频率和上截止频率。
◇ftype缺省时:
若Ωc只有1个值,则默认为低通;
若Ωc有2个值,则默认为带通;
其通带频率区间Ωcl<
Ω<
Ωcu。
注意:
所设计的带通和带阻滤波器系统函数是2N阶。
因为带通滤波器相当于N阶低通滤波器与N阶高通滤波器级联。
MATLAB数字滤波器设计作业
2009-06-2520:
01
其实并不是说为了交作业才写的程序,而是自己在做作业的过程当中学到了新的东西,这才是最有乐趣的!
对信号处理课的总结:
①信号处理是对各种信号处理的总称,用处是从看似杂乱的信号中提取出有用的信息。
②主要理论是(离散)傅立叶变换,使用时采用快速傅立叶变换,计算速度会快很多。
③对信号快速傅立叶变换后会得到幅值频谱图(通常是分离的线,表示信号组成成分),从中我们可以得到需要的信息(比如是否包含特定频率的波)。
④滤波器是对信号进行处理,过滤掉我们不需要的波,比如说噪声,更具体的比如图像的噪点的过滤。
原理就是让只让特定频率范围的波通过,否则就衰减的比较严重,从而实现了指定频率的分离。
滤波器的几个重要参数的含义。
⑤MATLAB软件在工程上确实是有这比较大的优势,基本上常用的函数都已经内置了,从理念上实现了傻瓜化。
用GOOGLE翻译成英文如下:
SummaryoftheSignalProcessingclass:
①signalprocessingisageneraltermforavarietyofsign