FIR低通滤波器+MATLAB编程+滤波前后图形

合集下载

使用MATLAB设计FIR滤波器

使用MATLAB设计FIR滤波器

使⽤MATLAB设计FIR滤波器1. 采⽤fir1函数设计,fir1函数可以设计低通、带通、⾼通、带阻等多种类型的具有严格线性相位特性的FIR滤波器。

语法形式:b = fir1(n, wn)b = fir1(n, wn, ‘ftype’)b = fir1(n, wn, ‘ftype’, window)b = fir1(n, wn, ‘ftype’, window, ‘noscale’)参数的意义及作⽤:b:返回的FIR滤波器单位脉冲响应,脉冲响应为偶对称,长度为n+1;n:滤波器的介数;wn:滤波器的截⽌频率,取值范围为0<wn<1,1对应信号采样频率⼀半。

如果wn是单个数值,且ftype参数为low,则表⽰设计截⽌频率为wn的低通滤波器,如果ftype参数为high,则表⽰设计截⽌频率为wn的⾼通滤波器;如果wn是有两个数组成的向量[wn1wn2],ftype为stop,则表⽰设计带阻滤波器,ftype为bandpass,则表⽰设计带通滤波器;如果wn是由多个数组成的向量,则根据ftype的值设计多个通带或阻带范围的滤波器,ftype为DC-1,表⽰设计的第⼀个频带为通带,ftype为DC-0,表⽰设计的第⼀个频带为阻带;window:指定使⽤的窗函数,默认为海明窗;noscale:指定是否归⼀化滤波器的幅度。

⽰例:N=41; %滤波器长度fs=2000; %采样频率%各种滤波器的特征频率fc_lpf=200;fc_hpf=200;fp_bandpass=[200 400];fc_stop=[200 400];%以采样频率的⼀半,对频率进⾏归⼀化处理wn_lpf=fc_lpf*2/fs;wn_hpf=fc_hpf*2/fs;wn_bandpass=fp_bandpass*2/fs;wn_stop=fc_stop*2/fs;%采⽤fir1函数设计FIR滤波器b_lpf=fir1(N-1,wn_lpf);b_hpf=fir1(N-1,wn_hpf,'high');b_bandpass=fir1(N-1,wn_bandpass,'bandpass');b_stop=fir1(N-1,wn_stop,'stop');%求滤波器的幅频响应m_lpf=20*log(abs(fft(b_lpf)))/log(10);m_hpf=20*log(abs(fft(b_hpf)))/log(10);m_bandpass=20*log(abs(fft(b_bandpass)))/log(10);m_stop=20*log(abs(fft(b_stop)))/log(10);%设置幅频响应的横坐标单位为Hzx_f=0:(fs/length(m_lpf)):fs/2;%绘制单位脉冲响应%绘制单位脉冲响应subplot(421);stem(b_lpf);xlabel('n');ylabel('h(n)');subplot(423);stem(b_hpf);xlabel('n');ylabel('h(n)');subplot(425);stem(b_bandpass);xlabel('n');ylabel('h(n)');subplot(427);stem(b_stop);xlabel('n');ylabel('h(n)');%绘制幅频响应曲线subplot(422);plot(x_f,m_lpf(1:length(x_f)));xlabel('频率(Hz)','fontsize',8);ylabel('幅度(dB)','fontsize',8);subplot(424);plot(x_f,m_hpf(1:length(x_f)));xlabel('频率(Hz)','fontsize',8);ylabel('幅度(dB)','fontsize',8);subplot(426);plot(x_f,m_bandpass(1:length(x_f)));xlabel('频率(Hz)','fontsize',8);ylabel('幅度(dB)','fontsize',8);subplot(428);plot(x_f,m_stop(1:length(x_f)));xlabel('频率(Hz)','fontsize',8);ylabel('幅度(dB)','fontsize',8);2. 采⽤fir2函数设计,函数算法是:⾸先根据要求的幅频响应向量形式进⾏插值,然后进⾏傅⾥叶变换得到理想滤波器的单位脉冲响应,最后利⽤窗函数对理想滤波器的单位脉冲响应激进型截断处理,由此得到FIR滤波器系数。

matlab的fir滤波器设计

matlab的fir滤波器设计

matlab的fir滤波器设计Matlab是一种常用的科学计算软件,可以广泛应用于信号处理领域。

其中一个常用的信号处理技术就是滤波器。

FIR滤波器是数字滤波器的一种,它具有线性相位特性和稳定性,并且在数字信号处理中应用非常广泛。

在Matlab中,设计FIR滤波器有多种方法,其中最常用的是窗函数法和最小二乘法。

窗函数法是基于理想滤波器的幅频响应,在频域上与希望的滤波器响应相乘的方式得到FIR滤波器系数。

而最小二乘法则是通过最小化滤波器输出与希望的输出之间的误差平方和来设计FIR滤波器。

在Matlab中,可以使用fir1函数实现FIR滤波器设计。

这个函数的输入参数包括滤波器阶数、截止频率、滤波器类型等。

例如,下面的代码可以实现一个低通FIR滤波器的设计:fs = 1000; % 采样频率fc = 100; % 截止频率N = 100; % 滤波器阶数h = fir1(N, fc/(fs/2), 'low'); % 低通FIR滤波器在上面的代码中,fs表示采样频率,fc表示截止频率,N表示滤波器阶数,h表示设计得到的FIR滤波器系数。

'low'表示设计的是低通滤波器,如果要设计高通、带通或带阻滤波器,可以将'low'换成'high'、'bandpass'或'bandstop'。

设计好FIR滤波器后,可以使用filter函数将滤波器应用于信号中。

例如,下面的代码可以将一个信号x通过上面设计得到的FIR 滤波器h进行滤波:y = filter(h, 1, x);在上面的代码中,h表示设计得到的FIR滤波器系数,x表示需要进行滤波的信号,y表示滤波后的信号。

'1'表示滤波器的分母系数为1,因为FIR滤波器的分母系数恒为1。

综上所述,Matlab的FIR滤波器设计方法包括窗函数法和最小二乘法,可以使用fir1函数实现滤波器设计,使用filter函数将滤波器应用于信号中。

实验3 用MATLAB窗函数法设计FIR滤波器

实验3 用MATLAB窗函数法设计FIR滤波器

实验10 用MATLAB 窗函数法设计FIR 滤波器一、实验目的㈠、学习用MA TLAB 语言窗函数法编写简单的FIR 数字滤波器设计程序。

㈡、实现设计的FIR 数字滤波器,对信号进行实时处理。

二、实验原理㈠、运用窗函数法设计FIR 数字滤波器与IIR 滤波器相比,FIR 滤波器在保证幅度特性满足技术要求的同时,很容易做到有严格的线性相位特性。

设FIR 滤波器单位脉冲响应)(n h 长度为N ,其系统函数)(z H 为∑-=-=10)()(N n n zn h z H)(z H 是1-z 的)1(-N 次多项式,它在z 平面上有)1(-N 个零点,原点0=z 是)1(-N 阶重极点。

因此,)(z H 永远是稳定的。

稳定和线性相位特性是FIR 滤波器突出的优点。

FIR 滤波器的设计任务是选择有限长度的)(n h ,使传输函数)(ωj e H 满足技术要求。

主要设计方法有窗函数法、频率采样法和切比雪夫等波纹逼近法。

本实验主要介绍用窗函数法设计FIR 数字滤波器。

图7-10-1 例1 带通FIR 滤波器特性㈡、 用MATLAB 语言设计FIR 数字滤波器例1:设计一个24阶FIR 带通滤波器,通带为0.35<ω<0.65。

其程序如下b=fir1(48,[0.35 0.65]);freqz(b,1,512)可得到如图7-10-1 所示的带通FIR滤波器特性。

由程序可知,该滤波器采用了缺省的Hamming窗。

例2:设计一个34阶的高通FIR滤波器,截止频率为0.48,并使用具有30dB波纹的Chebyshev窗。

其程序如下Window=chebwin(35,30);b=fir1(34,0.48,'high',Window);freqz(b,1,512)可得到如图7-10-2 所示的高通FIR滤波器特性。

图7-10-2 例2 高通FIR滤波器特性例3:设计一个30阶的低通FIR滤波器,使之与期望频率特性相近,其程序如下 f=[0 0.6 0.6 1];m=[1 1 0 0];b=fir2(30,f,m);[h,w]=freqz(b,1,128);plot(f,m,w/pi,abs(h))结果如图7-10-3所示。

利用MATLAB窗函数法设计一个可实现的FIR低通滤波器。

利用MATLAB窗函数法设计一个可实现的FIR低通滤波器。

一、实验目的1.掌握在MATLAB中窗函数的使用方法,了解不同窗函数之间的差别。

2.使用窗函数法设计一个可实现的FIR低通滤波器。

3.观察在相同长度下,不同的窗函数设计出来的滤波器有什么差别。

4.观察同一个窗在不同长度下设计出来的滤波器有什么差别。

二、实验条件PC机,MATLAB7.0三、实验内容1)通过help查找窗函数在MATLAB中如何实现通过example了解MATLAB中窗函数的实现,并且利用矩形窗,汉宁窗,哈明窗,布莱克曼窗和凯塞窗来进行接下来的实验。

2)设计物理可实现的低通滤波器设计思路:因为要设计FIR有限脉冲响应滤波器,通常的理想滤波器的单位脉冲响应h是无限长的,所以需要通过窗来截断它,从而变成可实现的低通滤波器。

程序如下:clc;clear all;omga_d=pi/5;omga=0:pi/30:pi;for N=3:4:51;w1= window(@blackman,N);w2 = window(@hamming,N);w3= window(@kaiser,N,2.5);w4= window(@hann,N);w5 = window(@rectwin,N);M=floor(N/2);subplot(311);plot(-M:M,[w1,w2,w3,w4,w5]); axis([-M M 0 1]);legend('Blackman','Hamming','kaiser','hann','rectwin');n=1:M;hd=sin(n*omga_d)./(n*omga_d)*omga_d/pi;hd=[fliplr(hd),1/omga_d,hd];h_d1=hd.*w1';h_d2=hd.*w2';h_d3=hd.*w3';h_d4=hd.*w4';h_d5=hd.*w5';m=1:M;H_d1=2*cos(omga'*m)*h_d1(M+2:N)'+h_d1(M+1);H_d2=2*cos(omga'*m)*h_d2(M+2:N)'+h_d2(M+1);H_d3=2*cos(omga'*m)*h_d3(M+2:N)'+h_d3(M+1);H_d4=2*cos(omga'*m)*h_d4(M+2:N)'+h_d4(M+1);H_d5=2*cos(omga'*m)*h_d5(M+2:N)'+h_d5(M+1);subplot(312);plot(omga,[H_d1,H_d2,H_d3,H_d4,H_d5]);legend('Blackman','Hamming','kaiser','hann','rectwin');subplot(313);plot(abs([fft(h_d1);fft(h_d2);fft(h_d3);fft(h_d4);fft(h_d5)] )');pause();end程序分析:整个对称窗的长度为N,然而为了在MATLAB中看到窗函数在负值时的形状需将N 变为它的一半,即为2M+1个长度。

用MATLAB设计低通带通高通和带阻FIR数字滤波器

用MATLAB设计低通带通高通和带阻FIR数字滤波器

抽样频率为f 为1KHZ的数字带通滤波器,性能要求为:通带范围从200HZ到250HZ,在此两频率处衰减不大于3dB,在100HZ和400HZ频率处频率衰减不得小于20dB,采用巴特沃斯滤波器4阶Butterworth滤波器源代码n = 2;Wn = [200 250]/500;[b,a] = butter(n,Wn);freqz(b,a,512,1000);这个滤波器100Hz、400Hz处衰减在-30db以上。

可以通过增大n增加衰减。

用MATLAB设计低通带通高通和带阻FIR数字滤波器(1)低通滤波器的技术指标:H(ejw)=1,0<w<0.3pi;H(ejw)=0,0.3pi<w<pi.(2)带通滤波器的技术指标:H(ejw=0,0<w<0.4pi;H(ejw)=1;0.4pi<w<0.6pi;H(ejw)=0,0.6<w<pi;(3)高通滤波器的技术指标:H(ejw)=0,0<w<0.7pi;H(ejw)=1,0.7pi<w<pi.(4)带阻滤波器的技术指标:H(ejw)=1,0<w<0.3pi;H(ejw)=0;0.3pi<w<0.7pi;H(ejw)=1,0.7<w<pi;低通采样定理实验1.1 实验目的1.了解数字信号处理系统的一般构成;2.掌握奈奎斯特抽样定理。

1.2 实验仪器1.YBLD智能综合信号源测试仪1台2.双踪示波器1台3.MCOM-TG305数字信号处理与现代通信技术实验箱1台4.PC机(装有MATLAB、MCOM-TG305配套实验软件)1台1.3 实验原理一个典型的DSP系统除了数字信号处理部分外,还包括A/D和D/A两部分。

这是因为自然界的信号,如声音、图像等大多是模拟信号,因此需要将其数字化后进行数字信号处理,模拟信号的数字化即称为A/D转换。

基于MATLAB设计FIR滤波器

基于MATLAB设计FIR滤波器

基于MATLAB设计FIR滤波器FIR(Finite Impulse Response)滤波器是一种数字滤波器,它具有有限的冲激响应长度。

基于MATLAB设计FIR滤波器可以使用signal工具箱中的fir1函数。

fir1函数的语法如下:b = fir1(N, Wn, window)其中,N是滤波器的阶数,Wn是截止频率,window是窗函数。

要设计一个FIR低通滤波器,可以按照以下步骤进行:步骤1:确定滤波器的阶数。

阶数决定了滤波器的截止频率的陡峭程度。

一般情况下,阶数越高,滤波器的陡峭度越高,但计算复杂度也会增加。

步骤2:确定滤波器的截止频率。

截止频率是指在滤波器中将信号的频率限制在一定范围内的频率。

根据应用的需求,可以选择适当的截止频率。

步骤3:选择窗函数。

窗函数是为了在时域上窗口函数中心增加频率衰减因子而使用的函数。

常用的窗函数有Hamming、Hanning等。

窗函数可以用来控制滤波器的幅度响应特性,使得它更平滑。

步骤4:使用fir1函数设计滤波器。

根据以上步骤确定滤波器的阶数、截止频率和窗函数,可以使用fir1函数设计FIR滤波器。

具体代码如下:N=50;%设定阶数Wn=0.5;%设定截止频率window = hanning(N + 1); % 使用Hanning窗函数步骤5:使用filter函数对信号进行滤波。

设计好FIR滤波器后,可以使用filter函数对信号进行滤波。

具体代码如下:filtered_signal = filter(b, 1, input_signal);其中,input_signal是输入信号,filtered_signal是滤波后的信号。

以上,便是基于MATLAB设计FIR滤波器的简要步骤和代码示例。

根据具体需求和信号特性,可以进行相应的调整和优化。

基于Matlab的FIR滤波器设计与实现

基于Matlab的FIR滤波器设计与实现

基于Matlab的FIR滤波器设计与实现⼀、摘要 前⾯⼀篇⽂章介绍了通过FDATool⼯具箱实现滤波器的设计,见“”,这⾥通过⼏个例⼦说明采⽤Matlab语⾔设计FIR滤波器的过程。

⼆、实验平台 Matlab7.1三、实验原理 以低通滤波器为例,其常⽤的设计指标有:1. 通带边缘频率f p(数字频率为Ωp)2. 阻带边缘频率f st (数字频率为Ωst)3. 通带内最⼤纹波衰减δp=-20log10(1-αp),单位为 dB4. 阻带最⼩衰减αs=-20log10(αs),单位为 dB5. 阻带起伏αs6. 通带峰值起伏αp 其中,以1、2、3、4条最为常⽤。

5、6条在程序中估算滤波器阶数等参数时会⽤到。

数字频率 = 模拟频率/采样频率四、实例分析例1 ⽤凯塞窗设计⼀FIR低通滤波器,通带边界频率Ωp=0.3pi,阻带边界频率Ωs=0.5pi,阻带衰减δs不⼩于50dB。

⽅法⼀:⼿动计算滤波器阶数N和β值,之后在通过程序设计出滤波器。

第⼀步:通过过渡带宽度和阻带衰减,计算滤波器的阶数B和β值。

第⼆步:通过程序设计滤波器。

程序如下:b = fir1(29,0.4,kaiser(30,4.55));[h1,w1]=freqz(b,1);plot(w1/pi,20*log10(abs(h1)));axis([0,1,-80,10]);grid;xlabel('归⼀化频率/p') ;ylabel('幅度/dB') ;波形如下:⽅法⼆:采⽤[n,Wn,beta,ftype] = kaiserord(f,a,dev)函数来估计滤波器阶数等,得到凯塞窗滤波器。

这⾥的函数kaiserord(f,a,dev)或者kaiserord(f,a,dev,f s): f为对应的频率,f s为采样频率;当f⽤数字频率表⽰时,f s则不需要写。

a=[1 0]为由f指定的各个频带上的幅值向量,⼀般只有0和1表⽰;a和f长度关系为(2*a的长度)- 2=(f的长度) devs=[0.05 10^(-2.5)]⽤于指定各个频带输出滤波器的频率响应与其期望幅值之间的最⼤输出误差或偏差,长度与a相等,计算公式:阻带衰减误差=αs,通带衰减误差=αp,可有滤波器指标中的3、4条得到。

FIR滤波器的MATLAB设计与实现

FIR滤波器的MATLAB设计与实现

FIR滤波器的MATLAB设计与实现FIR滤波器(Finite Impulse Response Filter)是一种数字滤波器,其特点是其响应仅由有限长度的序列决定。

在MATLAB中,我们可以使用信号处理工具箱中的函数来设计和实现FIR滤波器。

首先,需要明确FIR滤波器的设计目标,包括滤波器类型(低通、高通、带通、带阻)、通带和阻带的频率范围、通带和阻带的增益等。

这些目标将决定滤波器的系数及其顺序。

在MATLAB中,我们可以使用`fir1`函数来设计FIR滤波器。

该函数的使用方式如下:```matlabh = fir1(N, Wn, type);```其中,`N`是滤波器长度,`Wn`是通带边缘频率(0到0.5之间),`type`是滤波器的类型('low'低通、'high'高通、'bandpass'带通、'stop'带阻)。

该函数会返回一个长度为`N+1`的滤波器系数向量`h`。

例如,如果要设计一个采样频率为10kHz的低通滤波器,通带截止频率为2kHz,阻带频率为3kHz,可以使用以下代码:```matlabfc = 2000; % 通带截止频率h = fir1(50, fc/(fs/2), 'low');```上述代码中,`50`表示滤波器的长度。

注意,滤波器的长度越大,滤波器的频率响应越陡峭,但计算成本也更高。

在设计完成后,可以使用`freqz`函数来分析滤波器的频率响应。

例如,可以绘制滤波器的幅度响应和相位响应曲线:```matlabfreqz(h);```除了使用`fir1`函数外,MATLAB还提供了其他函数来设计FIR滤波器,如`fir2`、`firpm`、`firls`等,具体使用方式可以参考MATLAB的文档。

在实际应用中,我们可以将FIR滤波器应用于音频处理、图像处理、信号降噪等方面。

例如,可以使用FIR滤波器对音频信号进行去噪处理,或者对图像进行锐化处理等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Matlab实现振动信号低通滤波
附件txt中的数字是一个实测振动信号,采样频率为5000Hz,试设计一个长度为M=32的FIR低通滤波器,截止频率为600Hz,用此滤波器对此信号进行滤波。

要求:
(1)计算数字截止频率;
(2)给出滤波器系数;
(3)绘出原信号波形;
(4)绘出滤波后的信号波形;
解答过程:
第一部分:数字截止频率的计算
=600/5000/2=0.24数字截止频率等于截止频率除以采样频率的一半,即
n
第二部分:滤波器系数的确定
在matlab中输入如下程序,即可得到滤波器系数:
n=32
Wn=0.24
b=fir1(n,Wn)
得到的滤波器系数b为
Columns1through9
-0.0008-0.0018-0.0024-0.00140.00210.00750.01100.0077-0.0054
Columns10through18
-0.0242-0.0374-0.02990.00870.07560.15370.21660.24070.2166
Columns19through27
0.15370.07560.0087-0.0299-0.0374-0.0242-0.00540.00770.0110
Columns28through33
0.00750.0021-0.0014-0.0024-0.0018-0.0008
第三部分:原信号波形
将附件4中的dat文件利用识别软件读取其中的数据,共1024个点,存在TXT 文档中,取名bv.txt,并复制到matlab的work文件夹。

在matlab中编写如下程序:
x0=load('zhendong.txt');%找到信号数据地址并加载数据。

t=0:1/5000:1023/5000;%将数据的1024个点对应时间加载
figure(1);plot(t,x0);xlabel('t/s');ylabel('幅值');
运行之后就得到如下波形,即振动信号的原始波形图:
00.050.1
0.150.20.25
-1.5-1
-0.5
0.5
1
1.5
t/s 幅值第四部分:滤波后的波形图
在matlab 窗口中输入如下程序,即可得到滤波后的波形图:x0=load('zhendong.txt');t=0:1/5000:1023/5000;figure(1);plot(t,x0);xlabel('t/s');ylabel('幅值');fs=5000;n=32;Wn=0.24;b=fir1(n,Wn);%求滤波系数y0=filter(b,1,x0);%用matlab 自带的filter 函数进行滤波figure(2);plot(t,y0);xlabel('t/s');ylabel('幅值');
程序运行后就可以得到滤波后的波形,如下图所示:
00.050.1
0.150.20.25-0.8-0.6
-0.4
-0.2
0.2
0.4
0.6
t/s 幅值。

相关文档
最新文档