用matlab设计高通滤波器,雪比切夫、fir两种方法 课程设计HPF
- 格式:doc
- 大小:370.41 KB
- 文档页数:16
matlabfir滤波器设计在数字信号处理中,滤波器是一种常用的工具,用于处理信号的频率特性。
其中,FIR(有限脉冲响应)滤波器是一种常见的滤波器类型之一。
MATLAB提供了方便的工具和函数来设计和实现FIR滤波器。
在本文中,我们将介绍MATLAB中如何使用fir1函数来设计FIR滤波器。
要使用fir1函数设计FIR滤波器,需要指定滤波器的阶数和截止频率。
阶数决定了滤波器的复杂度,而截止频率则决定了滤波器的频率响应特性。
通过调整这两个参数,可以设计出不同类型的滤波器,如低通滤波器、高通滤波器、带通滤波器和带阻滤波器。
接下来,我们可以使用fir1函数来设计一个简单的低通滤波器。
例如,我们可以指定一个4阶低通滤波器,截止频率为0.5(归一化频率,取值范围为0到1)。
通过调用fir1函数并传入相应的参数,即可得到设计好的滤波器系数。
设计好滤波器系数后,我们可以将其应用于信号处理中。
例如,我们可以使用filter函数来对信号进行滤波。
将设计好的滤波器系数和待处理的信号作为输入参数传入filter函数,即可得到滤波后的信号。
这样,我们就可以实现对信号的滤波处理。
除了fir1函数外,MATLAB还提供了其他用于滤波器设计的函数,如firpm、fircls、firls等。
这些函数可以实现更复杂的滤波器设计,满足不同的需求。
通过选择合适的函数和参数,可以设计出性能优越的滤波器,用于各种信号处理应用中。
MATLAB提供了强大的工具和函数来设计和实现各种类型的滤波器。
通过合理选择滤波器的阶数和截止频率,以及使用适当的函数来设计滤波器系数,可以实现对信号的有效滤波处理。
希望本文能够帮助读者了解MATLAB中fir1函数的使用方法,进一步掌握滤波器设计的技巧,提高信号处理的效率和质量。
MATLAB实现数字FIR的高通_和带通等滤波器的源程序利用汉宁窗设计Ⅰ型数字高通滤波器clear all;Wp=0.6*pi;Ws=0.4*pi;tr_width=Wp-Ws;%过渡带宽度N=ceil(6.2*pi/tr_width)%滤波器长度n=0:1:N-1;Wc=(Ws+Wp)/2;%理想低通滤波器的截止频率hd=ideal_hp1(Wc,N);%理想低通滤波器的单位冲激响应w_han=(hanning(N))';%汉宁窗h=hd.*w_han;%截取得到实际的单位脉冲响应[db,mag,pha,w]=freqz_m2(h,[1]);%计算实际滤波器的幅度响应delta_w=2*pi/1000;Ap=-(min(db(Wp/delta_w+1:1:501)))%实际通带纹波As=-round(max(db(1:1:Ws/delta_w+1)))%实际阻带纹波subplot(221)stem(n,hd)title('理想单位脉冲响应hd(n)')subplot(222)stem(n,w_han)title('汉宁窗w(n)')subplot(223)stem(n,h)title('实际单位脉冲响应hd(n)')subplot(224)plot(w/pi,db)title('幅度响应(dB)')axis([0,1,-100,10])clear all;Wp=0.6*pi;Ws=0.4*pi;tr_width=Wp-Ws;%过渡带宽度N=ceil(6.2*pi/tr_width)%滤波器长度n=0:1:N-1;Wc=(Ws+Wp)/2;%理想低通滤波器的截止频率hd=ideal_hp1(Wc,N);%理想低通滤波器的单位冲激响应w_han=(hanning(N))';%汉宁窗h=hd.*w_han;%截取得到实际的单位脉冲响应[db,mag,pha,w]=freqz_m2(h,[1]);%计算实际滤波器的幅度响应delta_w=2*pi/1000;Ap=-(min(db(Wp/delta_w+1:1:501)))%实际通带纹波As=-round(max(db(1:1:Ws/delta_w+1)))%实际阻带纹波subplot(221)stem(n,hd)title('理想单位脉冲响应hd(n)')subplot(222)stem(n,w_han)title('汉宁窗w(n)')subplot(223)stem(n,h)title('实际单位脉冲响应hd(n)')subplot(224)plot(w/pi,db)axis([0,1,-100,10])基于切比雪夫一致逼近法设计FIR数字低通滤波器clear all;f=[0 0.6 0.7 1]; %给定频率轴分点A=[1 1 0 0]; %给定在这些频率分点上理想的幅频响应weigh=[1 10]; %给定在这些频率分点上的加权b=remez(32,f,A,weigh); %设计出切比雪夫最佳一致逼近滤波器[h,w]=freqz(b,1,256,1);h=abs(h);h=20*log10(h);subplot(211)stem(b,'.');grid;title('切比雪夫逼近滤波器的抽样值')subplot(212)plot(w,h);grid;title('滤波器幅频特性(dB)')利用汉宁窗设计Ⅰ型数字带阻滤波器clear all;Wpl=0.2*pi;Wph=0.8*pi;Wsl=0.4*pi;Wsh=0.6*pi;tr_width=min((Wsl-Wpl),(Wph-Wsh));%过渡带宽度N=ceil(6.2*pi/tr_width)%滤波器长度n=0:1:N-1;Wcl=(Wsl+Wpl)/2;%理想低通滤波器的截止频率Wch=(Wsh+Wph)/2;hd=ideal_bs(Wcl,Wch,N);%理想低通滤波器的单位冲激响应w_hann=(hanning(N))';%汉宁窗h=hd.*w_hann;%截取得到实际的单位脉冲响应[db,mag,pha,w]=freqz_m2(h,[1]);%计算实际滤波器的幅度响应delta_w=2*pi/1000;Ap=-(min(db(1:1:Wpl/delta_w+1)))%实际通带纹波As=-round(max(db(Wsl/delta_w+1:1:Wsh/delta_w+1)))%实际阻带纹波subplot(221)stem(n,hd)title('理想单位脉冲响应hd(n)')subplot(222)stem(n,w_hann)subplot(223)stem(n,h)title('实际单位脉冲响应hd(n)')subplot(224)plot(w/pi,db)title('幅度响应(dB)')axis([0,1,-100,10])利用三角窗设计Ⅲ型数字带通滤波器clear all;Wpl=0.4*pi;Wph=0.6*pi;Wsl=0.2*pi;Wsh=0.8*pi;tr_width=min((Wpl-Wsl),(Wsh-Wph)); %过渡带宽度N=ceil(6.1*pi/tr_width)%滤波器长度n=0:1:N-1;Wcl=(Wsl+Wpl)/2;%理想低通滤波器的截止频率Wch=(Wsh+Wph)/2;hd=ideal_bp2(Wcl,Wch,N);%理想低通滤波器的单位冲激响应w_tri=(triang(N))';%三角窗h=hd.*w_tri;%截取得到实际的单位脉冲响应[db,mag,pha,w]=freqz_m2(h,[1]);%计算实际滤波器的幅度响应delta_w=2*pi/1000;Ap=-(min(db(Wpl/delta_w+1:1:Wph/delta_w+1))) %实际通带纹波As=-round(max(db(Wsh/delta_w+1:1:501))) %实际阻带纹波subplot(221)stem(n,hd)title('理想单位脉冲响应hd(n)')subplot(222)stem(n,w_tri)title('三角窗w(n)')subplot(223)stem(n,h)title('实际单位脉冲响应hd(n)')subplot(224)plot(w/pi,db)title('幅度响应(dB)')axis([0,1,-100,10])利用布拉克曼窗设计Ⅱ型数字带通滤波器clear all;Wpl=0.4*pi;Wph=0.6*pi;Wsl=0.2*pi;Wsh=0.8*pi;tr_width=min((Wpl-Wsl),(Wsh-Wph)); %过渡带宽度N=ceil(11*pi/tr_width)+1%滤波器长度n=0:1:N-1;Wcl=(Wsl+Wpl)/2;%理想低通滤波器的截止频率Wch=(Wsh+Wph)/2;hd=ideal_bp1(Wcl,Wch,N);%理想低通滤波器的单位冲激响应w_bman=(blackman(N))';%布拉克曼窗h=hd.*w_bman;%截取得到实际的单位脉冲响应[db,mag,pha,w]=freqz_m2(h,[1]);%计算实际滤波器的幅度响应delta_w=2*pi/1000;Ap=-(min(db(Wpl/delta_w+1:1:Wph/delta_w+1))) %实际通带纹波As=-round(max(db(Wsh/delta_w+1:1:501))) %实际阻带纹波subplot(221)stem(n,hd)title('理想单位脉冲响应hd(n)')subplot(222)stem(n,w_bman)title('布拉克曼窗w(n)')subplot(223)stem(n,h)title('实际单位脉冲响应hd(n)')subplot(224)plot(w/pi,db)title('幅度响应(dB)')axis([0,1,-100,10])利用海明窗设计Ⅱ型数字低通滤波器clear all;Wp=0.2*pi;Ws=0.4*pi;tr_width=Ws-Wp;%过渡带宽度N=ceil(6.6*pi/tr_width)+1%滤波器长度n=0:1:N-1;Wc=(Ws+Wp)/2;%理想低通滤波器的截止频率hd=ideal_lp1(Wc,N);%理想低通滤波器的单位冲激响应w_ham=(hamming(N))';%海明窗h=hd.*w_ham;%截取得到实际的单位脉冲响应[db,mag,pha,w]=freqz_m2(h,[1]);%计算实际滤波器的幅度响应delta_w=2*pi/1000;Ap=-(min(db(1:1:Wp/delta_w+1)))%实际通带纹波As=-round(max(db(Ws/delta_w+1:1:501)))%实际阻带纹波subplot(221)stem(n,hd)title('理想单位脉冲响应hd(n)')subplot(222)stem(n,w_ham)title('海明窗w(n)')subplot(223)stem(n,h)title('实际单位脉冲响应hd(n)')subplot(224)plot(w/pi,db)title('幅度响应(dB)')axis([0,1,-100,10])%--------------------------------------------------------function[db,mag,pha,w]=freqz_m2(b,a)%滤波器的幅值响应(相对、绝对)、相位响应%db:相对幅值响应%mag:绝对幅值响应%pha: 相位响应%w 采样频率;%b 系统函数H(z)的分子项(对FIR,b=h)%a 系统函数H(z)的分母项(对FIR,a=1)[H,w]=freqz(b,a,1000,'whole');H=(H(1:1:501))';w=(w(1:1:501))';mag=abs(H);%绝对幅值响应db=20*log10((mag+eps)/max(mag));%相对幅值响应pha=angle(H);%相位响应利用模拟Butterworth滤波器设计数字低通滤波器% exa4-8_pulseDF for example4-8% using Butterworth analog lowpass filter to design digital lowpass filter%利用模拟Butterworth滤波器设计数字低通滤波器%脉冲响应不变法。
课 程 设 计20011 年 7月 1日 设计题目 学号专业班级 指导教师 学生姓名 张腾达 吴晔 陈丽娟 杨蕾通信电子电路课程设计 ——数字滤波器的设计 张静 光信息08-3班实验组员 张静 胡磊 艾永春 赵亚龙王宏道 胡进娟 马丽婷设计要求:某系统接收端接收到的信号为y=cos(2π*60t)+1.2cos(2π*140t)+2sin(2π*220t)+1.5sin(2π*300t)(A) 发现此信号夹杂了一个正弦噪声noise=1.5sin(2π*300t),请设计一个低通滤波器将此噪声滤除,从而恢复原信号。
(B) 发现此信号夹杂了一个正弦噪声noise= cos(2π*60t)+1.5sin(2π*300t) ,请设计一个带通滤波器将此噪声滤除,从而恢复原信号。
(C) 发现此信号夹杂了一个正弦噪声noise=1.2cos(2π*140t)+2sin(2π*220t),请设计一个带阻滤波器将此噪声滤除,从而恢复原信号。
(D) 发现此信号夹杂了一个正弦噪声noise= cos(2π*60t),请设计一个高通滤波器将此噪声滤除,从而恢复原信号。
要求:(1)请写出具体的MATLAB程序,并详细解释每条程序(2)画出滤波前后信号的频谱图(3)画出所设计滤波器的幅频和相频特性图,并写出具体参数参数计算:根据题目要求,开始选取Wp=2*60π,Ws=2*140π。
后来经老师指点,为了将阻带里的信号更好的滤除,通带里的信号更好的保持,达到较好的滤波效果,通带截止频率选取:Wp=2*70π>2*60π,阻带截止频率选取:Ws=2*120π<2*140π,输入信号为:y=cos(2π*60t)+1.2cos(2π*140t)+2sin(2π*220t)+1.5sin(2π*300t) 可知信号最高频率为2*300*π/(2π)=300Hz。
由奈奎斯特抽样定理得,fs>=2*300=600(Hz),这里为了得到更好的抽样效果,同时简化计算,选取fs=1000Hz。
课 程 设 计20011 年 7月 1日 设计题目 学 号专业班级 指导教师 学生姓名 张腾达 吴晔 陈丽娟 杨蕾通信电子电路课程设计 ——数字滤波器的设计 张静 20080302 光信息08-3班实验组员 张静 胡磊 艾永春 赵亚龙王宏道 胡进娟 马丽婷设计要求:某系统接收端接收到的信号为y=cos(2π*60t)+1.2cos(2π*140t)+2sin(2π*220t)+1.5sin(2π*300t)(A) 发现此信号夹杂了一个正弦噪声noise=1.5sin(2π*300t),请设计一个低通滤波器将此噪声滤除,从而恢复原信号。
(B) 发现此信号夹杂了一个正弦噪声noise= cos(2π*60t)+1.5sin(2π*300t) ,请设计一个带通滤波器将此噪声滤除,从而恢复原信号。
(C) 发现此信号夹杂了一个正弦噪声noise=1.2cos(2π*140t)+2sin(2π*220t),请设计一个带阻滤波器将此噪声滤除,从而恢复原信号。
(D) 发现此信号夹杂了一个正弦噪声noise= cos(2π*60t),请设计一个高通滤波器将此噪声滤除,从而恢复原信号。
要求:(1)请写出具体的MATLAB程序,并详细解释每条程序(2)画出滤波前后信号的频谱图(3)画出所设计滤波器的幅频和相频特性图,并写出具体参数参数计算:根据题目要求,开始选取Wp=2*60π,Ws=2*140π。
后来经老师指点,为了将阻带里的信号更好的滤除,通带里的信号更好的保持,达到较好的滤波效果,通带截止频率选取:Wp=2*70π>2*60π,阻带截止频率选取:Ws=2*120π<2*140π,输入信号为:y=cos(2π*60t)+1.2cos(2π*140t)+2sin(2π*220t)+1.5sin(2π*300t) 可知信号最高频率为2*300*π/(2π)=300Hz。
由奈奎斯特抽样定理得,fs>=2*300=600(Hz),这里为了得到更好的抽样效果,同时简化计算,选取fs=1000Hz。
2.高通滤波器function y=highp(x,f1,f3,rp,rs,Fs)%高通滤波%使用注意事项:通带或阻带的截止频率的选取范围是不能超过采样率的一半%即,f1,f3的值都要小于Fs/2%x:需要带通滤波的序列% f 1:通带截止频率% f 2:阻带截止频率%rp:边带区衰减DB数设置%rs:截止区衰减DB数设置%FS:序列x的采样频率% rp=0.1;rs=30;%通带边衰减DB值和阻带边衰减DB值% Fs=2000;%采样率%wp=2*pi*f1/Fs;ws=2*pi*f3/Fs;% 设计切比雪夫滤波器;[n,wn]=cheb1ord(wp/pi,ws/pi,rp,rs);[bz1,az1]=cheby1(n,rp,wp/pi,'high');%查看设计滤波器的曲线[h,w]=freqz(bz1,az1,256,Fs);h=20*log10(abs(h));figure;plot(w,h);title('所设计滤波器的通带曲线');grid on;y=filter(bz1,az1,x);end下面是高通滤波器的例子fs=2000;t=(1:fs)/fs;ff1=100;ff2=400;x=sin(2*pi*ff1*t)+sin(2*pi*ff2*t);figure;subplot(211);plot(t,x);subplot(212);hua_fft(x,fs,1);%------高通测试z=highp(x,350,300,0.1,20,fs);figure;subplot(211);plot(t,z);subplot(212);hua_fft(z,fs,1);下面三幅图分别是滤波前的时频图,滤波器的滤波特性曲线图和滤波后的时频图,通过图可以看出成功留下了400Hz的高频成分而把不要的低频成分100Hz去除了。
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滤波器对音频信号进行去噪处理,或者对图像进行锐化处理等。
基于MATLAB的FIR数字高通滤波器的设计[摘要]本文根据FIR高通滤波器的设计原理,提出了MATLAB 环境下基于窗函数法的FIR高通滤波器设计方法。
【关键词】FIR数字滤波器;高通滤波;窗函数;MATLAB一、数字滤波器1.1 数字滤波器概述数字滤波器,是指输入、输出均为数字信号,通过一定运算关系改变输入信号所含频率成分的相对比例或者滤除某些频率成分的器件。
数字滤波器分类的方法很多,可从以下几个方面进行分类:1.根据功能分类,可以分为低通滤波器、高通滤波器、带通滤波器和带阻滤波器。
2.根据滤波器的单位脉冲响应分类,可以分为无限长脉冲响应数字滤波器和有限长脉冲响应数字滤波器,它们一般被称为IIR数字滤波器和FIR数字滤波器。
3.根据数字滤波器的实现方法分类,可以分为递归型数字滤波器RDF (Recursive Digital Filter)和非递归型数字滤波器NDF(Nonrecursive Digital Filter)。
1.2 数字滤波器的设计1.2.1 数字滤波器的设计要求数字滤波器的频响特性函数一般为复函数,所以通常表示为(1-1)其中,称为幅频特性函数;称为相频特性函数。
幅频特性表示信号通过该滤波器后各频率成分的衰减情况,而相频特性反映各频率通过滤波器后在时间上的延时情况。
1.2.2 数字滤波器的设计方法IIR滤波器设计方法有两类,经常用到的一类设计方法是借助于模拟滤波器的设计方法进行。
其设计思路是:先设计模拟滤波器得到的传输函数,然后将按某种方法转换成数字滤波器的系统函数。
这一类方法是基于模拟滤波器的设计方法,相对比较成熟,它不仅有完整的设计公式,也有完整的图表供查阅,更可以直接调用MATLAB中的对应的函数进行设计。
另一类是直接在频域或者时域中进行设计的,设计时必须用计算机作辅助设计,直接调用MATLAB中的一些程序或设函数可以很方便地设计出所需要的滤波器。
二、FIR数字滤波器设计2.1 FIR数字滤波器的原理FIR滤波器的传递函数为:(2-1)可得FIR滤波器的系统系数差分方程,当FIR滤波器的系数满足下列中心对称条件时:(2-2)线性相位滤波器的相位滞后和延迟在整个频带上是相等且不变的。
基于matlab程序的fir滤波器设计实现随着科学技术的发展,电子设备的设计要求也在不断提高,需要功能更加齐全的电子设备。
滤波器作为重要的电子元件,可以降低噪声,提高电子设备的工作效率,广泛应用在通信、仪器仪表、电力系统等领域。
fir滤波器由具有非常特殊结构的线性系统组成。
在传输特性中,它具有稳定的延迟,具有良好的频率分析和回波抑制功能。
为了使用fir滤波器,我们必须对其进行合理的设计,实现滤波器的功能。
本文介绍使用matlab程序来设计和实现fir滤波器的方法。
首先,我们需要确定滤波器的目标,包括滤波器的截止频率、阻带频率以及期望的功率谱,然后将这些参数输入matlab程序中,并使用合适的算法来计算滤波器的系数。
在matlab中实现fir滤波器的各种算法有很多种,包括传统的窗函数法,频率响应插值法,自适应法和波束形成法等。
算法的选择取决于优化目标,可以根据滤波器的要求自由选择。
当确定了滤波器要求和设计算法之后,就可以使用matlab编写程序来实现这些算法。
matlab有丰富的函数库,可以很容易地实现fir滤波器的设计。
具体的程序设计步骤如下:首先,选择所需的设计参数,包括滤波器阶数、归一化频率、幅值和相位等;然后,选择所需的算法,计算出匹配的滤波器系数;最后,编写一个完整的程序来实现fir滤波器的设计,测试滤波器的参数,并输出实现结果。
本文介绍了使用matlab程序来实现fir滤波器设计的方法,它可以实现滤波器的质量分析和测试,可以根据滤波器要求进行精确的设计。
使用matlab来设计fir滤波器,不仅可以缩短设计时间,而且能够节省大量的金钱和人力,具有非常重要的意义。
总之,fir滤波器在电子设备设计中有着重要的作用,使用matlab程序来设计和实现fir滤波器有着非常重要的意义。
通过此次研究,有助于我们更好地理解和应用matlab程序来设计和实现fir 滤波器,从而提高滤波器的性能,从而更好地满足电子设备设计的要求。
matlabfir滤波器设计
MATLAB是一种非常强大的工具,可以用于各种信号处理任务,包括滤波器设计。
MATLAB中的fir滤波器设计工具可以帮助用户设计数字滤波器,以满足特定的信号处理需求。
fir滤波器是一种数字滤波器,它使用有限数量的加权输入样本来计算输出样本。
fir滤波器的设计通常涉及确定滤波器的系数,这些系数用于计算输出样本。
MATLAB中的fir滤波器设计工具可以帮助用户确定这些系数,以满足特定的滤波器要求。
MATLAB中的fir滤波器设计工具提供了多种设计方法,包括窗口方法、最小二乘法、频率抽样和多项式逼近。
用户可以根据自己的需求选择适合自己的设计方法。
例如,如果用户需要设计一个低通滤波器,可以使用窗口方法,该方法使用一个窗口函数来确定滤波器的系数。
如果用户需要设计一个带通滤波器,可以使用最小二乘法,该方法使用最小二乘法来确定滤波器的系数。
MATLAB中的fir滤波器设计工具还提供了多种滤波器类型,包括低通、高通、带通和带阻滤波器。
用户可以根据自己的需求选择适合自己的滤波器类型。
例如,如果用户需要滤除高频噪声,可以选择低通滤波器,该滤波器将滤除高于一定频率的信号成分。
MATLAB中的fir滤波器设计工具是一种非常强大的工具,可以帮助用户设计数字滤波器,以满足特定的信号处理需求。
用户可以根
据自己的需求选择适合自己的设计方法和滤波器类型,以获得最佳的滤波效果。
课程设计任务书学生姓名:专业班级:指导教师:工作单位:题目: 利用MATLAB结合频率取样法设计数字高通FIR滤波器要求完成地主要任务:1.利用频率取样法设计一个数字高通FIR滤波器2.画出高通滤波器地幅频响应课程设计进度安排指导教师签名:年月日系主任(或责任教师)签名:年月日目录课程设计进度安排 (I)目录 (i)摘要 (I)Abstract (II)1 FIR数字滤波器 (1)1.1 FIR滤波器地特点 (1)1.2 FIR数字滤波器设计方法 (2)1.3 线性相位FIR数字滤波器地条件和特点 (2)1.3.1 线性相位条件 (2)1.3.2 线性相位FIR滤波器地幅度特性与相位特性 (3)2 利用频率采样法设计FIR滤波器 (4)2.1 用频率采样法设计滤波器地基本原理 (4)2.2 线性相位地约束条件 (5)2.3 逼近误差及其改进措施 (6)2.3.1 产生误差地原因 (6)2.3.2 减小误差地方法 (7)2.4 频率采样法地特点 (8)3 频率取样法地数字高通滤波器地实现 (8)3.1 MA TLAB地介绍 (8)3.2 设计条件 (8)3.3 设计程序 (9)3.4 调试结果 (11)4 心得体会 (12)附录 (14)摘要MATLAB是由美国mathworks公司发布地主要面对科学计算、可视化以及交互式程序设计地高科技计算环境.它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统地建模和仿真等诸多强大功能集成在一个易于使用地视窗环境中,为科学研究、工程设计以及必须进行有效数值计算地众多科学领域提供了一种全面地解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)地编辑模式,代表了当今国际科学计算软件地先进水平.本文介绍了如何利用MA TLAB仿真软件系统及数字信号处理所学知识利用频率采样法设计一个数字高通滤波器.以此来巩固课堂理论学习,并能用所学理论知识正确分析信号处理地基本问题和解释信号处理地基本现象.关键字: MATLAB;数字信号处理;数字滤波器;频率采样法AbstractMATLAB is released by the United States mathworks mainly for scientific computing, visualization and interactive program designed high-tech computing environment. It numerical analysis, matrix computation, scientific data visualization as well as non-linear dynamic systems modeling and simulation, and many other powerful integrated in an easy-to-use Windows environment, scientific research, engineering design and the need for effective numerical the edit mode many scientific fields provides a comprehensive solution, and in large part to get rid of the traditional non-interactive programming language (such as C, Fortran), on behalf of the advanced level of today's international scientific computing software.This article describes how to use MATLAB simulation software systems and digital signal processing learned knowledge using frequency sampling method to design a digital high-pass filter. In order to consolidate the theoretical classroom learning, and basic questions and explain basic signal processing phenomenon can be learned theoretical knowledge to correctly analyze thesignal processing.Keyword: MATLAB; digital signal processing; digital filter; frequency sampling method1 FIR数字滤波器1.1 FIR滤波器地特点FIR滤波器地脉冲响应h(n)是有限长地(0≤n≤N-1),其z变换为:(式1)它是z-1地(N-1)阶多项式,在有限z平面(0<n<∞)上有(N-1)个零点,而极点位于z平面原点z=0处,且有(N-1)阶.FIR滤波器地基本结构可以理解为一个分节地延时线,把每一节地输出加权累加,可得到滤波器地输出,FIR滤波器地冲激响应h(n)是有限长地,数学上M阶FIR滤波器可以表示为:y(n)=∑-=-1)()(Miinxih (式2)其系统函数为:H(z)=∑-=-1)(Mnnznh (式3)普通地直接型FIR 滤波器结构如图1 所示.图1 FIR滤波器地直接型结构FIR滤波器最突出地优点有2个:一是只要对h(n)附加一定地条件,很容易获得严格地线性相位特性;二是由于H(z)地极点位于原点z=0处,始终满足稳定条件,所以FIR滤波器永远稳定.三是FIR滤波器由于单位脉冲响应是有限长地,因而可以用快速傅里叶变换(FFT)算法来实现过滤信号,从而可大大提高运算效率.但是,要取得很好地衰减特性,FIR滤波器H(z)地阶次比IIR滤波地要高.∑-=-=1)()(NnnznhzH1.2 FIR数字滤波器设计方法IIR滤波器设计中地各种变换法对FIR滤波器设计是不适用地,这是因为那里是利用有理分式地系统函数,而FIR滤波器地系统函数只是z-1地多项式.FIR地设计任务是选择有限长度地脉冲响应h(n),得到系统函数H(z),使幅频特性满足技术指标要求,同时使相频特性达到线性相位.常用设计方法:(1)窗函数法(2)频率采样法(3)切比雪夫等波纹逼近法.人们最感兴趣地是FIR滤波器具有线性相位地相频特性.对非线性相位地FIR滤波器,一般可以用IIR滤波器来代替,因为同样幅度特性,IIR滤波器所需阶数比FIR滤波器地阶数要少得多.1.3 线性相位FIR数字滤波器地条件和特点1.3.1 线性相位条件对于长度为N地h(n),传输函数为(式4)H(ejω)=Hg(ω)ejθ(ω) (式5)式中,Hg(ω)称为幅度特性,θ(ω)称为相位特性.注意,这里Hg(ω)不同于|H(ejω)|,Hg(ω)为ω地实函数,可能取负值,而|H(ejω)|总是正值.H(ejω)线性相位是指θ(ω)是ω地线性函数,即θ(ω)= - τω,τ为常数(式6)如果θ(ω)满足θ(ω)= θ0- τω,θ0是起始相位严格地说,此时θ(ω)不具有线性相位,但以上两种情况都满足群时延是一个常数,即(式7)τωωθ-=dd)(∑-=-=1)()(Nnnj j enheHωω也称这种情况为线性相位.1.3.2 线性相位FIR滤波器地幅度特性与相位特性线性相位FIR滤波器地幅度特性与相位特性如下图:图2线性相位FIR滤波器地幅度特性与相位特性一览表在设计时,要注意选择合适地h(n)对称形式(奇或偶)和h(n)长度N(奇数或偶数).如要设计高通滤波器,只能选情况1和情况4;要设计低通滤波器,只能选情况1和情况2.2 利用频率采样法设计FIR 滤波器2.1 用频率采样法设计滤波器地基本原理待设计地滤波器地传输函数用Hd(ejω)表示,可按下列思路进行设计:⑴ 它在ω=0到2π之间等间隔采样N 点,得到Hd(k)(式8) ⑵ N 点Hd(k)进行IDFT ,得到h(n)(式9) 式中,h(n)作为所设计地滤波器地单位取样响应. ⑶ h(n)求系统函数H(z)(式10)将插值公式重写如下(式11) 此式就是直接利用频率采样值Hd(k)形成滤波器地系统函数.用频率采样法设计线性相位滤波器地条件 :FIR 滤波器具有线性相位地条件是h(n)是实序列,且满足h(n)= h(N –1–n),其传输函数应满足地条件是 (式12)(式13) (式14) (式15) 1,,2,1,0,|)()(2-===N k eH k H k N j d d πωω1,2,1,0,)(1)(102-==∑-=N n e k H N n h N k kn N j d π∑-=-=10)()(N n n z n h z H 1201()1()1N N d j k k N H k z H z N e z π--=--=-∑()()()j j d gH e H e ωθωω=1()2N θωω-=-()(2),g g H H N ωπω=-=奇数()(2),g gH H N ωπω=--=偶数且Hg(π)=0 .在ω=0~2π之间等间隔采样N 点,将ω=ωk 代入式(4~7)中,并写成k 地函数:(式16)(式17) ,N 为奇数(式18) ,N 为偶数且 (式19)(式20) 说明N 等于奇数时Hg(k)对(N –1)/2偶对称,N 等于偶数时, Hg(k)对N/2奇对称,且Hg(N/2)=0. 对于高通滤波器,这里N 只能取奇数.截止频率为ωc ,采样点数N ,Hg(k)和θ(k)用下面公式计算(式21)以上是用频率采样法设计滤波器地基本原理.2.2 线性相位地约束条件以h(n)为偶对称,N 为奇数地情况进行分析.1)FIR 地频响具有线性相位地一般表达式当h(n)为偶对称,N 为奇数时,则ωωω)21()()(--=N j j e H e H (式22)而且幅度函数H (w )应为偶对称,即)2()(ωπω-=H H (式23)2)采样值H (k )具有线性相位地约束kk j k j k N j e H e k N H e H k H θθππ===)2()()(2 (式24)20,1,2,,1k k k N N πω==-,()()()j k d g H k H k e θ=121()2N N k k k N Nπθπ--=-=-()()g g H k H N k =-()()g g H k H N k =--()02g N H =()()1,0,1,2,,()0,1,2,,1()(1)/,0,1,2,,1g g c g c c c H k H N k k k H k k k k N k k N k N k N θπ=-==⎫⎪==++--⎬⎪=--=-⎭其中, )2(k N H H k π= 表示采样值地模(纯标量),k θ表示其相角.因此,在采样点上具有线性相位地条件应为:)11(*221N k k N N k --=--=ππθ (式25) 而且,k H 必须满足偶对称,即:k N k H H -= (式26)实际滤波器地传输函数ωωj e z j z H eH ==|)()(,与理想地传输函数Hd(ejω)间存在误差,如图2图3频率采样地响应需要讨论逼近误差问题及其改进措施. 2.3 逼近误差及其改进措施2.3.1 产生误差地原因从图3可看出,实际地H(ejω)与理想地Hd(ejω)相比,误差主要体现在一是通带和阻带出现波动,二是过渡带加宽,与窗函数设计法情况类似,产生误差地原因可从时域和频域两方面进行分析. 从时域分析:如果Hd(ejω)有间断点,那么相应单位取样响应hd(n)应是无限长地.这样,由于时域混叠,引起所设计地h(n)和hd(n)有偏差.为此,希望在频域地采样点数N 加大.N 愈大,设计出地滤波器愈逼近待设计地滤波器Hd(ejω).从频域分析:在采样点ω=2πk ,k=0,1,2,…,N -1,Ф(ω-2πk/N)=1,因此,采样点处H (ejωk) (ωk=2πk/N)与H(k)相等,逼近误差为0.在采样点之间,H(ejω)由有限项地H(k)Ф(ω-2πk/N)之和形成.其误差和Hd(ejω)特性地平滑程度有关,特性愈平滑地区域,误差愈小;特性曲线间断点处,误差最大.表现形式为间断点用倾斜线取代,且间断点附近形成振荡特性,使阻衰减减小,往往不能满足技术要求.2.3.2 减小误差地方法最直观地想法是增加采样点数,即加大N 值,由于过渡带就等于采样间隔(参看图3),即N πω2=∆ (式27)所以加大N ,可使过渡带变窄,但增加要适当,否则会增加滤波器体积与成本.但是,增加N 并不会改善滤波器地阻带衰减特性,因为Hd(ejω)是理想矩形, 无论怎样增多频率采样地点数,在通、阻带交界处,幅值总是从1突变到0,会引起较大地起伏振荡. 为使逼近误差更小,和窗口法地平滑截断一样,通过在理想频率响应地不连续点地边缘上加一些过渡地抽样点,减小频带边缘地突变,也就减小了起伏振荡,增大了阻带最小衰减. 一般过渡带取一、二、三点抽样值即可得到满意结果.如在低通设计中,不加过渡点时,阻带最小衰减为-20dB ,加三个过渡点(最优设计)则可达-80dB 到-95dB 左右.加过渡点地示意如图4所示.图4理想低通滤波器增加过渡点增加过渡点,可使阻带衰减明显提高,但付出地代价是过渡带加宽,可通过下式加大N 来调整.)1(2+=∆m N πω m=0,1,2,3… (式28)2.4 频率采样法地特点频率采样法设计滤波器最大地优点是直接从频率域进行设计,比较直观,也适合于设计具有任意幅度特性地滤波器.但边界频率不易控制.如果增加采样点数N ,对确定边界频率有好处,但会增加滤波器地成本.因此,它适合于窄带滤波器地设计.3 频率取样法地数字高通滤波器地实现3.1 MATLAB 地介绍MATLAB 是矩阵实验室(Matrix Laboratory )地简称,是美国MathWorks 公司出品地商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算地高级技术计算语言和交互式环境,主要包括MATLAB 和Simulink 两大部分.3.2 设计条件ws=0.6pi, wp=0.8pi, 通带波动1dB, 阻带衰减50dB ,M=33.3.3 设计程序% 频率采样技术: 高通% ws=0.6pi, wp=0.8pi, Rp=1dB, As=50dB% M=33, T1 = 0.1095。
matlabfir滤波器设计在数字信号处理中,滤波器是一种常用的工具,用于对信号进行处理和分析。
其中,fir滤波器是一种常见的数字滤波器,具有线性相位和有限冲激响应的特点。
在Matlab中,fir滤波器设计是一项重要的任务,可以通过Matlab提供的函数和工具来实现。
fir滤波器是一种使用有限长脉冲响应(finite impulse response, FIR)的数字滤波器。
与IIR滤波器相比,fir滤波器具有较好的稳定性和线性相位特性,因此在许多应用中得到广泛应用。
fir滤波器的设计通常包括确定滤波器的系数,即滤波器的频率响应。
在Matlab中,可以使用fir1、firls、firpm等函数来设计fir滤波器。
fir1函数是Matlab中用于设计一阶和二阶fir滤波器的函数,可以指定滤波器的类型(低通、高通、带通、带阻)、截止频率和滤波器的阶数。
通过调整这些参数,可以设计出符合要求的fir滤波器。
另外,firls函数可以用于最小二乘法设计fir滤波器,firpm函数可以用于最小最大法设计fir滤波器。
fir滤波器设计的关键是确定滤波器的系数,即滤波器的权重。
在Matlab中,可以通过fir1、firls、firpm等函数来计算出滤波器的系数,从而实现fir滤波器的设计。
设计fir滤波器时,需要考虑滤波器的类型、截止频率、滤波器的阶数等因素,以满足具体的信号处理需求。
除了fir1、firls、firpm等函数外,Matlab还提供了firgr、fdatool 等工具,用于可视化fir滤波器的频率响应和设计滤波器。
通过这些工具,可以直观地查看滤波器的频率响应曲线、幅度响应和相位响应,帮助用户更好地理解和调整滤波器的设计参数。
fir滤波器设计是数字信号处理中的重要任务,Matlab提供了丰富的函数和工具,可以帮助用户设计出符合要求的fir滤波器。
通过合理选择滤波器的类型、截止频率和阶数,可以实现对信号的有效滤波和处理。
目录摘要 (1)ABSTRACT (2)1 MATLAB简介 (3)1.1 MATLAB的概况 (3)1.2 MATLAB产生的历史背景 (3)1.3 MATLAB的语言特点 (4)1.4 MATLAB界面介绍 (5)1.4.1工作环境窗口 (5)1.4.2当前路径窗口 (6)2. 数字滤波器 (7)2.1数字滤波器的概念 (7)2.2数字滤波器的分类 (7)2.3数字滤波器的设计要求 (9)3. IIR数字滤波器的设计 (9)3.1设计原理 (9)3.2设计步骤 (10)4.切比雪夫IIR数字滤波器 (11)5.双线性变换法设计IIR数字滤波器 (12)5.1设计原理 (12)5.2双线性变换的优缺点 (14)6. 数字切比雪夫高通IIR滤波器设计 (17)6.1设计流程图 (17)6.2程序设计及运行结果 (18)6.2.1设计过程 (18)6.2.2运行结果 (20)7小结 (22)8参考文献 (23)摘要在现代通信系统中,由于信号中经常混有各种复杂成分,所以很多信号分析都是基于滤波器而进行的,而数字滤波器是通过数值运算实现滤波,具有处理精度高、稳定、灵活、不存在阻抗匹配问题,可以实现模拟滤波器无法实现的特殊滤波功能。
数字滤波器根据其冲激响应函数的时域特性,可分为两种,即无限长冲激响应(IIR)数字滤波器和有限长冲激响应(FIR)数字滤波器。
实现IIR滤波器的阶次较低,所用的存储单元较少,效率高,精度高,而且能够保留一些模拟滤波器的优良特性,因此应用很广。
Matlab软件以矩阵运算为基础,把计算、可视化及程序设计有机融合到交互式工作环境中,并且为数字滤波的研究和应用提供了一个直观、高效、便捷的利器。
尤其是Matlab中的信号处理工具箱使各个领域的研究人员可以直观方便地进行科学研究与工程应用。
本文首先介绍了数字滤波器的概念,分类以及设计要求。
接着又逐步介绍了IIR数字滤波器,切比雪夫IIR 数字滤波器,以及用双线性变换法设计IIR数字滤波器。
摘要无限长脉冲数字滤波器的设计方法只考虑了幅度特性,没有考虑相位特性,所设的滤波器一般是某种确定的非线性相位特性。
有限脉冲响应(FIR)滤波器在保证了幅度特性满足技术要求的同时,很容易做到有严格的线性相位特性。
本课题利用MATLAB软件实现。
MATLAB是“矩阵实验室”(MATrix LABoratoy)的缩写,是一种科学计算软件,它使用方便,输入简捷,运算高效,内容丰富,因此利用MATLAB软件,通过一系列较为系统的函数法,根据已知的技术指标,就可以设计出满足要求的滤波器。
关键字:MATLAB;窗函数;FIR带阻数字滤波器;线性相位目录1.FIR滤波器简介 (3)1.1 FIR的特点 (3)2.2线性相位 (3)2.主要设计内容 (5)3.窗函数 (6)3.1常用窗函数 (6)3.2窗函数的指标 (9)4应用窗函数法设计 FIR 数字滤波器的步骤 (10)4.1数字高通滤波器的设计: (10)总结 (11)参考文献 (12)附录 (13)1.FIR 滤波器简介数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。
根据其单位冲激响应函数的时域特性可分为两类:无限冲激响应(IIR )滤波器和有限冲激响应(FIR )滤波器。
1.1 FIR 的特点FIR 滤波器的主要优点为:系统总是稳定的,FIR 滤波器的系统函数可以表示为 (2-1) 易知,H (z ) 在 Z 平面上有 N -1个零点,z =0 是 N -1 阶极点,因此FIR 系统总是稳定的(极点都在单位圆内)。
FIR 滤波器的优点之二:容易实现线性相位。
当 FIR 系统的单位冲激响应满足 时,该系统具有线性相位。
(N 为奇数) (2-2)(N 为偶数) (2-3) FIR 滤波器的优点之三:允许设置多通带(或多阻带)滤波器。
FIR 滤波器的优点之四:FIR 滤波器可以采用 FFT 方法实现其功能,从而大大提高效率。
设计一个高通滤波器,并检验它的性能采样率为10kHZ阻带边缘为1.5Khz,衰减为40bB通带边缘为2kHz,波纹为3Db采用切比雪夫2型滤波器Fs=1e4 ; fs=1.5e3; fp=2e3; As=40; Rp=3 ;wp=2*fp/Fs; ws=2*fs/Fs;用MA TLAB工具:设计的滤波器性能>>Fs=1e4;>>fs=1.5e3;>>fp=2e3;>>As=40;>>Rp=3;>>wp=2*fp/Fs;>>ws=2*fs/Fs;>>[N,wn]=cheb2ord(wp,ws,Rp,As);>>[b,a]=cheby2(N,As,wn,'high');>>[db,mag,pha,grd,w]=freqz_m(b,a);>> subplot(2,2,1);plot(w/pi,mag);>> axis([0,1,0,1]);>> setX([0 0.3 0.4 1]);>>setY([0.01 0.7279 1])>> title('Magnitude Response');>> subplot(2,2,2);plot(w/pi,db);>> axis([0 1 -70 0])>> setX([0 0.3 0.4 1])>> setY([-40 -2.7589])>> title('Magnitude Response in dB');输入信号x=cos(0.6*pi*n); 取200个抽样值,为了便于观看,在画图是裁剪掉100个值不直观,直接做频谱图为了说明该滤波器的性能,做一组对比。
换上另一种频率的信号x=cos(0.2*pi*n);由上图可以看到该信号完全被滤去了可以看出在20和180点的信号几乎淹没了。
目录1 课题综述 (1)1.1 课题来源 (1)1.2预期目标 (1)1.3 面对的问题 (1)1.4 需要解决的关键技术 (1)2 系统分析 (2)2.1 涉及的基础知识 (2)2.2 解决的基本思路 (2)2.3 总体方案 (2)2.4 功能模块框图 (2)3 详细设计 (3)3.1 巴特沃斯低通滤波特性(MATLAB) (3)3.2 巴特沃斯高通滤波特性(MATLAB) (4)3.3 切比雪夫低通滤波特性(MATLAB) (4)3.4 切比雪夫高通滤波特性(MATLAB) (4)4 程序调试 (5)4.1 巴特沃斯低通滤波特性 (5)4.2 巴特沃斯高通滤波特性 (6)4.3 切比雪夫低通滤波特性 (8)4.4 切比雪夫高通滤波特性 (9)5 运行与测试 (10)5.1 选择音频文件(WAV) (10)5.2 滤波后音频特点 (10)6 全文代码设计 (10)总结 (14)致谢 (15)参考文献 (16)1 课题综述1.1 课题来源随着数字集成电路,设备和系统技术的快速进步,通过数字方法进行信号处理已变得越来越有吸引力。
大规模一般用途的计算机和特殊用途硬盘的高效性,已使得实时滤波既实用又经济。
目前主要有两类滤波器,模拟滤波器和数字滤波器,它们在物理组成和工作方式上完全不同,而模拟滤波器的技术发展已相当成熟,所以研究的重点基本上放在了数字滤波器上。
滤波器的功能是用来移除信号中不需要的部分,比如随机噪声;或取出信号中的有用部分,如位于某段频率范围内的成分。
目前随着计算机技术和数字信号处理器芯片的发展,使我们更为便利地识别和提取各种各样的信号。
因此研究不同数字滤波器的设计原理和稳定性分析对于满足军事、航空、民营等等各个领域的信号处理要求具有十分重要的意义。
1.2 预期目标能够理解并掌握无限脉冲响应数字滤波器(IIR)的机理,分析IIR滤波器的结构特性,观察IIR滤波器的频域特性。
能够通过MATLAB实现巴特沃斯,切比雪夫的高通低通滤波器的幅频响应,相频响应,以及零极点的图像的勾画。
题目滤波器设计与实现学生姓名学号专业班级设计内容与要求一、设计内容:设计一个模拟高通切比雪夫Ⅰ滤波器,技术指标:通带截止频率2000Hz,通带最大衰减1dB;过渡带700Hz,阻带最小衰减60dB,画出其幅度谱和相位谱。
二、设计要求:1 设计报告一律按照规定的格式,使用A4纸,格式、封面统一给出模版。
2 报告内容(1)设计题目及要求(2)设计原理(包括滤波器工作原理、涉及到的matlab函数的说明) (3)设计内容(设计思路,设计流程、仿真结果)(4)设计总结(收获和体会)(5)参考文献(6)程序清单起止时间2012年12 月3日至2012年12月11 日指导教师签名2012年12月2日系(教研室)主任签名年月日学生签名年月日一、设计题目及要求设计一个模拟高通切比雪夫Ⅰ滤波器,技术指标:通带截止频率2000Hz ,通带最大衰减1dB ;过渡带700Hz ,阻带最小衰减60dB ,画出其幅度谱和相位谱。
二、设计原理 (包括滤波器工作原理、涉及到的matlab 函数的说明)2.1切比雪夫滤波器的内容:2.1.1、切比雪夫滤波器的幅度平方函数:从公式中我们可以发现它需要计算的ε和N,1101.0-=pa ε边带频率p Ω,通带最大衰减p α=0.1dB 、阻带最大衰减s α=50dB 、阻带截止频率s Ω,它们满足:)/cosh()/110cosh(11.0p s a ar ar N s ΩΩ-≥-ε根据公式可以求出最小的切比雪夫I 型滤波器阶数的N 最小值。
2.1.2、切比雪夫滤波器的三个参量: Ωc 通带截止频率,ε表征通带内波纹大小由:22221()()1()a N pA H j C εΩ=Ω=Ω+Ω由通带衰减决定。
2.1.3、滤波器阶数N 的确定:设阻带的起始点频率(阻带截止频率)用Ωs 表示,在Ωs 处的A2(Ωs)为 :令λs=Ωs/Ωp ,由λs>1,有:可以解出:2.1.4、3dB 截止频率Ωc 的确定:令按照(6.2.19)式,有:通常取λc>1,因此: 上式中仅取正号,得到3dB 截止频率计算公式2.2涉及到的MATLAB 函数:121211211()[()]1()11[1]()()111[1]()N s s s s s s p s C ch Nch A ch A N ch ch NA λλελελλελ----==--=⎫⎪⎧Ω=Ω-⎨⎬⎩⎪⎭22211()2()1,1()[()]c c N c c pN c c A C C ch Nch ελλλλε-Ω=Ω==Ω=±=2max2min22max min 2()10lg ()1() 1 ()1A A A A δεΩ=ΩΩ=Ω=+220.110lg(1)101δδεε=+=-2221()1()s sN PA C εΩ=Ω+Ω①[N, wpo]=cheblord(wp, ws, Rp, As, 's')该格式用于计算切比雪夫1滤波器的阶数N 和阻带截止频率wsp 。
matlab的fir滤波器设计FIR(Finite Impulse Response)滤波器是指响应有限长度序列输入的数字滤波器,它可以用于信号去噪、信号滤波和信号重构等领域。
MATLAB软件是目前应用广泛的数学软件工具箱,它可以实现数字信号处理、信号滤波和滤波器设计等功能。
下面我们来分步骤解析如何利用MATLAB完成FIR滤波器设计。
第一步,确定滤波器参数要设计FIR滤波器,需要明确设计的目的,例如信号去噪还是信号滤波。
同时,需要确定滤波器的参数,包括滤波器的采样率、通带边界、阻带边界等。
第二步,调用MATLAB工具箱并加载数据打开MATLAB软件,选择Digital Signal Processing Toolbox,调用fir1函数,该函数用于设计一般的低通、高通、带通和带阻FIR 滤波器。
加载需要滤波的数据,并将其存储在一个变量中。
第三步,进行滤波器设计在MATLAB命令行窗口中输入以下命令,来进行FIR滤波器的设计。
h = fir1(N, Wn, 'type');其中,N是滤波器的阶数,Wn是正规化的截止频率值,type是滤波器的类型,可以是低通、高通、带通和带阻滤波器。
例如,我们要设计一个30阶的低通滤波器,带通频带为0.3至0.7,采样率为1000Hz,输入以下命令:N = 30;Wn = [0.3 0.7];Btype = 'low';FIR_filter = fir1(N, Wn, Btype);第四步,使用FIR滤波器进行滤波使用filter函数,可以将设计好的FIR滤波器应用到加载的数据上,进行滤波操作。
Y_filtered = filter(FIR_filter, 1, X);其中,FIR_filter是设计好的FIR滤波器,X是加载的待滤波数据,Y_filtered是经过滤波器处理后的数据。
第五步,可视化输出结果通过绘制函数将滤波器的输入和输出信号进行可视化处理,观察滤波效果。
课 程 设 计20011 年 7月 1日 设计题目 学 号专业班级 指导教师 学生姓名 张腾达 吴晔 陈丽娟 杨蕾通信电子电路课程设计 ——数字滤波器的设计 张静 20080302 光信息08-3班实验组员 张静 胡磊 艾永春 赵亚龙王宏道 胡进娟 马丽婷设计要求:某系统接收端接收到的信号为y=cos(2π*60t)+1.2cos(2π*140t)+2sin(2π*220t)+1.5sin(2π*300t)(A) 发现此信号夹杂了一个正弦噪声noise=1.5sin(2π*300t),请设计一个低通滤波器将此噪声滤除,从而恢复原信号。
(B) 发现此信号夹杂了一个正弦噪声noise= cos(2π*60t)+1.5sin(2π*300t) ,请设计一个带通滤波器将此噪声滤除,从而恢复原信号。
(C) 发现此信号夹杂了一个正弦噪声noise=1.2cos(2π*140t)+2sin(2π*220t),请设计一个带阻滤波器将此噪声滤除,从而恢复原信号。
(D) 发现此信号夹杂了一个正弦噪声noise= cos(2π*60t),请设计一个高通滤波器将此噪声滤除,从而恢复原信号。
要求:(1)请写出具体的MATLAB程序,并详细解释每条程序(2)画出滤波前后信号的频谱图(3)画出所设计滤波器的幅频和相频特性图,并写出具体参数参数计算:根据题目要求,开始选取Wp=2*60π,Ws=2*140π。
后来经老师指点,为了将阻带里的信号更好的滤除,通带里的信号更好的保持,达到较好的滤波效果,通带截止频率选取:Wp=2*70π>2*60π,阻带截止频率选取:Ws=2*120π<2*140π,输入信号为:y=cos(2π*60t)+1.2cos(2π*140t)+2sin(2π*220t)+1.5sin(2π*300t) 可知信号最高频率为2*300*π/(2π)=300Hz。
由奈奎斯特抽样定理得,fs>=2*300=600(Hz),这里为了得到更好的抽样效果,同时简化计算,选取fs=1000Hz。
下面计算关于π的归一化频率:通带截止频率:wp=Wp/fs=0.14*π阻带截止频率:ws=Ws/fs=0.24*π软件介绍:简介:MATLAB 是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。
使用 MATLAB,您可以较使用传统的编程语言(如 C、C++ 和 Fortran)更快地解决技术计算问题。
MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。
附加的工具箱(单独提供的专用 MATLAB 函数集)扩展了MATLAB 环境,以解决这些应用领域内特定类型的问题。
MATLAB 提供了很多用于记录和分享工作成果的功能。
可以将您的 MATLAB 代码与其他语言和应用程序集成,来分发您的 MATLAB 算法和应用。
主要功能:1.此高级语言可用于技术计算2.此开发环境可对代码、文件和数据进行管理3.交互式工具可以按迭代的方式探查、设计及求解问题4.数学函数可用于线性代数、统计、傅立叶分析、筛选、优化以及数值积分等5.二维和三维图形函数可用于可视化数据6.各种工具可用于构建自定义的图形用户界面7.各种函数可将基于 MATLAB 的算法与外部应用程序和语言(如 C、C++、Fortran、Java、COM 以及 Microsoft Excel)集成题目分析:根据题目要求,综合在《数字信号处理》中所学的知识以及老师的建议与讲解,此设计用FIR、IIR都可实现。
利用MATLAB中的专用函数进行编写,最终确定设计方案如下:1.窗函数法设计FIR数字滤波器2.切比雪夫1型高通滤波器第一方案:窗函数法设计FIR 数字滤波器 窗函数设计法的基本思想是用FIRDF 逼近希望的滤波器。
设希望逼近的滤波器的频率为()ωj d e H ,其单位脉冲响应用()n h d 表示,为了设计简单方便,通常选择()ωj d e H 具有片段常数特性的理想滤波器因此()n h d 是无限长的非因果序列,不能直接作为FIRDF 的单位脉冲响应。
窗函数设计法就是截取()n h d 有限长的一段因果序列,并用适合的窗函数进行加权作为FIRDF 的的单位脉冲响应()n h 。
实验程序:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 滤波器部分 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wp=0.24*pi; %关于π的归一化通带截止频率ws=0.14*pi; %关于π的归一化阻带截止频率DB=wp-ws; %过渡带宽N0=ceil(6.2*pi/DB); %计算所需h(n)长度N0,ceil(x)取大于等于x 的最小整数N=N0+mod(N0+1,2); %确保h(n)长度N 是奇数wc=(wp+ws)/2/pi; %计算理想高通滤波器通带截止频率(关于π归一化) hn=fir1(N-1,wc,'high',hanning(N));%调用fir1计算高通FIRDF 的h(n) Fs=1000; %抽样频率[H,w1]=freqz(hn,1,N,Fs);%求滤波器幅度响应,设置最大幅度为1plot(w1,abs(H)); %画图,滤波器幅度响应title('滤波器幅度响应'); %设置图像窗口标题figure(2); %创建图像窗口(2)freqz(hn); %画图,滤波器幅度响应(db)和相位响应%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 输入信号部分 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% t=0:0.001:1.999; %设置t 变量范围,和步长n=2000; %抽样点数Fs=1000; %抽样频率y=cos(2*pi*60*t)+1.2*cos(2*pi*140*t)+2*sin(2*pi*220*t)+1.5*sin(2*pi*3 00*t);%输入信号y1=fft(y); %输入信号的傅里叶变换y2=fftshift(y1); %输入信号傅里叶变换重新排布,使数据与频率对应f=(0:1999)*Fs/n-Fs/2; %计算频率fhold on; %保持图形figure(3); %创建图像窗口(3)plot(f,abs(y2),'b'); %画图,输入信号频谱图title('输入信号频谱图'); %设置图像窗口标题%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 输出信号部分 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%G=fftfilt(hn,y); %输入信号y通过滤波器G1=fft(G); %滤波后,输出信号傅里叶变换G2=fftshift(G1); %输出信号傅里叶变换重新排布,使数据与频率对应figure(4); %创建图像窗口(4)plot(f,abs(G2));grid %画图,输出信号频谱图title('输出信号频谱图'); %设置图像窗口标题实验图形:滤波器的幅频特性,可以看出,再阻带截止频率70Hz以下的幅频响应基本为0,通带截止频率120Hz以上的幅频响应基本为1。
系统滤波器有较好的滤波效果。
上图幅频响应(db)通带较好保持,阻带有较大衰减。
下图相频响应,在通带内滤波器有良好的线性相位。
输入信号的频谱图(含有低频部分60Hz)输出信号,可以看出低频部分60Hz已被滤除第二方案:雪比切夫1型cheblap,cheblord,cheby1是切比雪夫I 型滤波器设计函数。
其调用格式如下: ①.[z,p,G ]=cheblap(N,Rp)计算N 阶归一化系统函数的零、极点和增益因子。
返回长度为N 的列向量z 和p 分别给出N 个零点和N 个极点的位置,G 表示滤波器增益。
得到的系统函数如下:))())...(2())(1(())())...(2())(1(()()()(N p s p s p s N z s z s z s G s D s P s H a a a ------== 式中,z(k)和p(k)分别为向量z 和p 的第k 个元素。
②.[N,wpo]=cheblord(wp,ws,Rp,As)计算滤波器的阶数和通带截止频率,wp 和ws 为数字滤波器的通带边界频率和阻带边界频率的归一化值,Rp 和As 为通带最大衰减和阻带最小衰减。
③.[B,A]=cheby1(N,Rp,wpo,'ftype')N,wpo 分别为滤波器阶数和通带截止频率,该式计算系统函数分子和分母系数多项式的系数向量B 和A 。
N N NN zN A z N A z A A z N B z N B z B B z A z B z H --------++++++++++==)1()(...)2()1()1()(...)2()1()()()()1(1)1(1 式中,B(k)和A(k)分别为向量B 和A 的第k 个元素。
自定义函数(freqz_m ):function [db,mag,pha,grd,w] = freqz_m(b,a);% Modified version of freqz subroutine% ------------------------------------% [db,mag,pha,grd,w] = freqz_m(b,a);% db = Relative magnitude in dB computed over 0 to pi radians % mag = absolute magnitude computed over 0 to pi radians % pha = Phase response in radians over 0 to pi radians % grd = Group delay over 0 to pi radians% w = 501 frequency samples between 0 to pi radians % b = numerator polynomial of H(z) (for FIR: b=h) % a = denominator polynomial of H(z) (for FIR: a=[1]) %[H,w] = freqz(b,a,1000,'whole');H = (H(1:1:501))'; w = (w(1:1:501))';mag = abs(H);db = 20*log10((mag+eps)/max(mag));pha = angle(H);% pha = unwrap(angle(H));grd = grpdelay(b,a,w);% grd = diff(pha);% grd = [grd(1) grd];% grd = [0 grd(1:1:500); grd; grd(2:1:501) 0];% grd = median(grd)*500/pi;实验程序:%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 滤波器部分 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% wp1=0.24*pi; %关于π的归一化通带截止频率ws1=0.14*pi; %关于π的归一化阻带截止频率Rp=0.1; %通带最大衰减Ar=15; %阻带最小衰减[N1,wn1]=cheb1ord(wp1/pi,ws1/pi,Rp,Ar);%在给定滤波器性能的情况下,选择雪比切夫1型滤波器的阶数和截止频率Wn1[b1,a1]=cheby1(N1,Rp,wn1,'high'); %根据阶数,通带最大衰减,截止频率,设置雪比切夫1型高通滤波器[db1,mag1,pha1,grd1,w1]=freqz_m(b1,a1);%求滤波器幅度响应(db),幅度响应,相位响应,群延迟figure(1) %创建图像窗口(1)subplot(3,4,1); %分割图像窗口三行四列,第一小窗口plot(w1/pi,mag1); %画图,幅度响应axis([0 1 0 1.1]); %axis([xmin xmax ymin ymax])设置x轴和y轴的表示范围ylabel('(a)'); %设置纵坐标y的名称title('幅度响应'); %设置小窗口标题subplot(3,4,2); %分割图像窗口三行四列,第二小窗口plot(w1/pi,db1); %画图,幅度响应(db)=20log(幅度响应)axis([0 1 -40 5]); %axis([xmin xmax ymin ymax])设置x轴和y轴的表示范围title('幅度响应(db)'); %设置小窗口标题subplot(3,4,3); %分割图像窗口三行四列,第三小窗口plot(w1/pi,pha1/pi); %画图,相位响应axis([0 1 -1 1]); %axis([xmin xmax ymin ymax])设置x轴和y轴的表示范围title('相位响应'); %设置小窗口标题subplot(3,4,4); %分割图像窗口三行四列,第四小窗口plot(w1/pi,grd1); %画图,群延迟axis([0 1 0 10]); %axis([xmin xmax ymin ymax])设置x轴和y轴的表示范围title('群延迟'); %设置小窗口标题%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 输入信号部分 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%t=0:0.001:1.999; %置t变量范围,和步长n=2000; %抽样点数Fs=1000; %抽样频率y=cos(2*pi*60*t)+1.2*cos(2*pi*140*t)+2*sin(2*pi*220*t)+1.5*sin(2*pi*300*t);%输入信号y1=fft(y); %输入信号的傅里叶变换y2=fftshift(y1); %输入信号傅里叶变换重新排布,使数据与频率对应f=(0:1999)*Fs/n-Fs/2; %计算频率fhold on; %保持图形figure(2); %创建图像窗口(2)plot(f,abs(y2),'b');grid%画图,输入信号频谱图title('输入信号频谱图'); %设置图像窗口标题%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 输出信号部分 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%G=filter(b1,a1,y); %输入信号y通过滤波器G1=fft(G); %滤波后,输出信号傅里叶变换G2=fftshift(G1); %输出信号傅里叶变换重新排布,使数据与频率对应figure(3); %创建图像窗口(3)plot(f,abs(G2));grid %画图,输出信号频谱图title('输出信号频谱图'); %设置图像窗口标滤波器特性:幅频响应及幅频响应(db),通带较好保持,阻带有较大衰减。