用matlab设计高通滤波器,雪比切夫、fir两种方法 课程设计HPF

合集下载

matlabfir滤波器设计

matlabfir滤波器设计

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的高通_和带通等滤波器的源程序

MATLAB实现数字FIR的高通_和带通等滤波器的源程序

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滤波器设计数字低通滤波器%脉冲响应不变法。

用matlab设计高通滤波器,雪比切夫、fir两种方法 课程设计HPF

用matlab设计高通滤波器,雪比切夫、fir两种方法 课程设计HPF

课 程 设 计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。

用matlab设计高通滤波器,雪比切夫、fir两种方法 课程设计HPF

用matlab设计高通滤波器,雪比切夫、fir两种方法 课程设计HPF

课 程 设 计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。

matlab程序切比雪夫I型高通数字滤波器

matlab程序切比雪夫I型高通数字滤波器

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滤波器的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滤波器对音频信号进行去噪处理,或者对图像进行锐化处理等。

基于MATLAB的FIR数字高通滤波器的设计

基于MATLAB的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滤波器设计实现

基于matlab程序的fir滤波器设计实现

基于matlab程序的fir滤波器设计实现随着科学技术的发展,电子设备的设计要求也在不断提高,需要功能更加齐全的电子设备。

滤波器作为重要的电子元件,可以降低噪声,提高电子设备的工作效率,广泛应用在通信、仪器仪表、电力系统等领域。

fir滤波器由具有非常特殊结构的线性系统组成。

在传输特性中,它具有稳定的延迟,具有良好的频率分析和回波抑制功能。

为了使用fir滤波器,我们必须对其进行合理的设计,实现滤波器的功能。

本文介绍使用matlab程序来设计和实现fir滤波器的方法。

首先,我们需要确定滤波器的目标,包括滤波器的截止频率、阻带频率以及期望的功率谱,然后将这些参数输入matlab程序中,并使用合适的算法来计算滤波器的系数。

在matlab中实现fir滤波器的各种算法有很多种,包括传统的窗函数法,频率响应插值法,自适应法和波束形成法等。

算法的选择取决于优化目标,可以根据滤波器的要求自由选择。

当确定了滤波器要求和设计算法之后,就可以使用matlab编写程序来实现这些算法。

matlab有丰富的函数库,可以很容易地实现fir滤波器的设计。

具体的程序设计步骤如下:首先,选择所需的设计参数,包括滤波器阶数、归一化频率、幅值和相位等;然后,选择所需的算法,计算出匹配的滤波器系数;最后,编写一个完整的程序来实现fir滤波器的设计,测试滤波器的参数,并输出实现结果。

本文介绍了使用matlab程序来实现fir滤波器设计的方法,它可以实现滤波器的质量分析和测试,可以根据滤波器要求进行精确的设计。

使用matlab来设计fir滤波器,不仅可以缩短设计时间,而且能够节省大量的金钱和人力,具有非常重要的意义。

总之,fir滤波器在电子设备设计中有着重要的作用,使用matlab程序来设计和实现fir滤波器有着非常重要的意义。

通过此次研究,有助于我们更好地理解和应用matlab程序来设计和实现fir 滤波器,从而提高滤波器的性能,从而更好地满足电子设备设计的要求。

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

课 程 设 计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),通带较好保持,阻带有较大衰减。

相关文档
最新文档