matlab中关于数字滤波器的函数介绍

合集下载

matlab自带的滤波器函数

matlab自带的滤波器函数

matlab自带的滤波器函数
Matlab自带的滤波器函数可以用于对信号进行滤波处理,常用的函数有:
1. fir1函数:设计一阶低通、高通、带通、带阻滤波器的FIR 数字滤波器,可自定义通带和阻带的截止频率。

2. cheby1函数:设计ChebyshevI型低通、高通、带通、带阻数字滤波器,可自定义通带和阻带的截止频率和最大通带波纹。

3. butter函数:设计Butterworth型低通、高通、带通、带阻数字滤波器,可自定义通带和阻带的截止频率和滤波器阶数。

4. filtfilt函数:对信号进行双向滤波处理,可避免滤波后信号的相位畸变和滞后。

这些函数可以在Matlab的Signal Processing Toolbox中找到,可根据需要选择合适的函数进行滤波处理。

- 1 -。

matlab之经典数字滤波函数介绍

matlab之经典数字滤波函数介绍

matlab 之经典数字滤波函数介绍 南京理工大学仪器科学与技术专业 谭彩铭2010-3-121 butter 函数设计一个9阶高通Butterworth 数字滤波器,截止频率为300Hz图1图2下面看一看freqz 函数例如对离散系统传递函数1212(1)(2)(3)()(1)(2)(3)b b z b z H z a a za z----++=++freqz 函数的的主要计算环节是计算()sjw T H e编写下图所示程序验证之图3图4可见h1和h相等图2中出现小于-360度是否表达其他不同的意义?-361度和-1度有什么区别吗?对于正弦波应该是一样的,故理论上说应该没有区别。

butter函数的原理是什么?顾名思义,butter函数的原理是基于Butterworth滤波器。

这里始终要带着这个问题去研究,滤波系数本身有什么特性竟然可使低频的滤掉,高频的通过,其实这里想要寻找的是敏捷控程,理论上这个问题的答案已经很成熟。

2 impinvar函数用冲击响应不变法数字仿真模拟Butterworth滤波器,程序如下。

图53 bilinear 函数用双线性变换法数字仿真模拟Butterworth 滤波器,程序如下。

图64 fir1函数由理想滤波器幅频特性反推滤波系数,得出来的系数数量是无穷多的。

故可采用加窗的方法舍去部分,留下有限的滤波系数数量,使仍能基本达到需要的滤波效果。

图7图85 fir2函数fir2函数的基本原理同fir1函数,它的功能更进一层,可以设计任意形状的频率响应图形。

图9图10、图9中,w 如果是角频率值,将w 转换成频率值时,应该是将w 除以2*pi ,但是程序中为什么除以的是pi 呢?准确地说,图9中的w 并非是角频率值,而是频率值,freqz 函数调用时若没有加入采样率参数,其返回的频率值的范围是0~pi 。

6 fir1函数补充对调用方式b=fir(n,wn),wn 的取值范围是(0,1),其中1对应于0.5fs (fs 为采样率)。

Matlab中的多种滤波器设计方法介绍

Matlab中的多种滤波器设计方法介绍

Matlab中的多种滤波器设计方法介绍引言滤波器是数字信号处理中常用的工具,它可以去除噪声、改善信号质量以及实现其他信号处理功能。

在Matlab中,有许多不同的滤波器设计方法可供选择。

本文将介绍一些常见的滤波器设计方法,并详细说明它们的原理和应用场景。

一、FIR滤波器设计1.1 理想低通滤波器设计理想低通滤波器是一种理论上的滤波器,它可以完全去除截止频率之上的频率分量。

在Matlab中,可以使用函数fir1来设计理想低通滤波器。

该函数需要指定滤波器阶数及截止频率,并返回滤波器的系数。

但是,由于理想低通滤波器是非因果、无限长的,因此在实际应用中很少使用。

1.2 窗函数法设计为了解决理想滤波器的限制,窗函数法设计了一种有限长、因果的线性相位FIR滤波器。

该方法利用窗函数对理想滤波器的频率响应进行加权,从而得到实际可用的滤波器。

在Matlab中,可以使用函数fir1来实现窗函数法设计。

1.3 Parks-McClellan算法设计Parks-McClellan算法是一种优化设计方法,它可以根据指定的频率响应要求,自动选择最优的滤波器系数。

在Matlab中,可以使用函数firpm来实现Parks-McClellan算法。

二、IIR滤波器设计2.1 Butterworth滤波器设计Butterworth滤波器是一种常用的IIR滤波器,它具有平坦的幅频响应,并且在通带和阻带之间有宽的过渡带。

在Matlab中,可以使用函数butter来设计Butterworth滤波器。

2.2 Chebyshev滤波器设计Chebyshev滤波器是一种具有较陡的滚降率的IIR滤波器,它在通带和阻带之间有一个相对较小的过渡带。

在Matlab中,可以使用函数cheby1和cheby2来设计Chebyshev滤波器。

2.3 Elliptic滤波器设计Elliptic滤波器是一种在通带和阻带上均具有较陡的滚降率的IIR滤波器,它相较于Chebyshev滤波器在通带和阻带上都具有更好的过渡特性。

matlab设计数字滤波器参数说明

matlab设计数字滤波器参数说明

matlab设计数字滤波器参数说明数字滤波器是一种用于信号处理的重要工具,它可以去除信号中的杂乱干扰,并改善信号的质量。

MATLAB作为一种优秀的科学计算软件,提供了丰富的工具和函数,用于设计数字滤波器的参数。

在MATLAB中,我们可以使用`fdesign`函数来创建滤波器设计对象,并使用相应的函数进行参数设置。

数字滤波器的参数主要包括滤波器类型、截止频率、阶数和滤波器的响应类型等。

首先,我们需要选择数字滤波器的类型。

常见的类型包括低通滤波器、高通滤波器、带通滤波器和带阻滤波器。

根据信号处理的需求,选择适当的滤波器类型。

其次,我们需要确定滤波器的截止频率。

截止频率是指滤波器开始起作用的频率。

对于低通滤波器,截止频率是指允许通过的最高频率; 对于高通滤波器,截止频率是指允许通过的最低频率; 对于带通滤波器,截止频率是指允许通过的频率范围。

在确定了滤波器类型和截止频率后,我们还需要指定滤波器的阶数。

阶数是指滤波器的复杂程度和滤波器在滤波时的陡峭程度。

一般来说,阶数越高,滤波器的性能越好,但计算复杂度也会增加。

最后,我们需要选择滤波器的响应类型。

响应类型是指滤波器在频域中的特性。

常见的响应类型包括巴特沃斯响应、切比雪夫响应和椭圆响应等。

每种响应类型都有其特定的特性和适用范围。

通过设置这些参数,我们可以使用MATLAB中的滤波器设计函数来生成数字滤波器的系数,并将其应用于信号处理任务中。

使用适当的滤波器参数可以提高信号的质量,并且能够根据具体需求实现各种信号处理任务。

MATLAB提供了丰富的文档和示例代码,供我们学习和使用数字滤波器设计的相关知识。

通过深入理解数字滤波器的参数设置和设计原理,我们可以更好地应用数字滤波器进行信号处理,并解决各种实际问题。

matlab中filter函数的用法与作用

matlab中filter函数的用法与作用

1. 简介MATLAB中的filter函数是一种用于信号处理和滤波的重要工具,可以对数字信号进行滤波处理,包括低通滤波、高通滤波、带通滤波等多种滤波方式。

在实际工程和科学研究中,filter函数被广泛应用于音频处理、图像处理、通信系统等领域。

本文将重点介绍MATLAB中filter函数的用法与作用。

2. 基本语法MATLAB中filter函数的基本语法如下:```MatlabY = filter(B, A, X)```其中,B和A分别是所需滤波器的分子系数和分母系数,X是待滤波的输入信号序列,Y是滤波后的输出信号序列。

3. 滤波器设计与参数在使用filter函数进行滤波前,需要设计出所需的滤波器。

通常可以使用MATLAB中的fir1、fir2、butter、cheby1等函数进行滤波器的设计,得到分子系数B和分母系数A。

滤波器的参数包括截止频率、通带幅度、阻带幅度等,这些参数将直接影响滤波效果。

4. 低通滤波低通滤波是一种常见的信号处理方式,可以剔除高频噪声、平滑信号曲线。

在MATLAB中,可以通过设计滤波器并利用filter函数实现低通滤波,有效提取出信号的低频成分。

5. 高通滤波高通滤波的作用与低通滤波相反,可以剔除低频信号,突出高频细节。

利用MATLAB中的filter函数,可以很方便地实现高通滤波处理,适用于频率分析、边缘检测等应用场景。

6. 带通滤波除了低通滤波和高通滤波外,MATLAB中的filter函数还支持带通滤波,即只保留指定频率范围内的信号成分,其他频率成分则被滤除。

带通滤波经常用于通信系统中的频率选择性传输。

7. 实际应用在实际工程和科学研究中,filter函数被广泛应用于音频处理、图像处理、信号处理等领域。

在音频处理中,可以利用低通滤波器剔除底噪;在图像处理中,可以利用高通滤波器增强图像细节;在通信系统中,可以利用带通滤波器进行频率选择性传输。

8. 总结在MATLAB中,filter函数是一种非常强大的信号处理工具,可以满足各种滤波需求。

Matlab中的信号滤波方法

Matlab中的信号滤波方法

Matlab中的信号滤波方法信号滤波是一种常见的信号处理技术,用于从输入信号中去除噪声或不需要的频率成分,保留所需信号。

Matlab是一种强大的数学软件,提供了许多用于信号滤波的函数和工具箱。

本文将介绍Matlab中常用的信号滤波方法,并讨论它们的优缺点和适用范围。

一、数字滤波器数字滤波器是一种在数字信号上进行滤波的工具。

Matlab提供了多种数字滤波器设计函数,如butter、cheby1、cheby2、ellip等。

这些函数根据不同的设计要求(如滤波器类型、通带和阻带的频率响应等)生成滤波器系数。

用户可以通过调整这些参数来实现所需滤波效果。

这些函数使用了不同的滤波器设计方法,如巴特沃斯、切比雪夫等。

巴特沃斯滤波器是一种常用的滤波器,具有平坦的通带频率响应和陡峭的阻带频率响应。

切比雪夫滤波器在通带和阻带的频率响应上都具有可调节的波纹特性。

数字滤波器的优点是可以精确控制滤波器的频率响应,且可以根据需求进行实时滤波。

然而,它们可能引入幅度和相位失真,并且在滤波器阶数较高时会引起较大的延迟。

二、时频分析时频分析是一种将信号在时间和频率域上分解的方法。

在Matlab中,常用的时频分析方法有短时傅里叶变换(Short-Time Fourier Transform,STFT)和小波变换(Wavelet Transform)。

STFT将信号分成一系列短时段,并对每个时段进行傅里叶变换。

这样可以得到信号的时频表示,即频谱在时间上的变化。

Matlab中的spectrogram函数可以用于计算和绘制STFT。

小波变换是一种多分辨率分析方法,对不同频率的信号具有更好的时域和频域分辨率。

通过使用不同的小波基函数,可以分解信号,并对高频部分进行平滑处理。

Matlab中的cwt和wavedec函数可以用于计算和绘制小波变换。

时频分析的优点是可以捕捉信号在时间和频率上的变化,并提供更详细的频谱信息。

然而,它们可能对信号产生一定程度的模糊,且对噪声敏感。

matlab中陷波滤波器传递函数表达形式

MATLAB中陷波滤波器是一种常用的数字滤波器类型,它可以在频率响应中实现零点和极点的传递函数形式。

在MATLAB中,我们可以通过不同的方法来表示陷波滤波器的传递函数,下面将详细介绍这些方法和表达形式。

一、传递函数的标准形式表示在MATLAB中,陷波滤波器的传递函数通常使用标准的二阶形式表示。

其传递函数表达形式如下所示:H(z) = (1 - a*exp(j*theta))/(1 - a*exp(-j*theta))其中,a是零点的半径,theta是零点的角度。

这种形式的传递函数可以很方便地在MATLAB中进行表达和处理。

二、传递函数的分子-分母形式表示除了标准形式之外,我们还可以使用传递函数的分子-分母形式来表示陷波滤波器的传递函数。

这种形式的传递函数可以更直观地表达零点和极点的位置,有助于分析滤波器的性能。

其表达形式如下:H(z) = b(z)/a(z)其中,b(z)表示传递函数的分子多项式,a(z)表示传递函数的分母多项式。

通过这种形式,我们可以方便地对滤波器进行频域和时域的分析。

三、传递函数的零极点形式表示另外,我们还可以使用传递函数的零极点形式来表示陷波滤波器的传递函数。

这种形式可以更直观地展示滤波器的零点和极点位置,方便我们对滤波器进行分析和设计。

其表达形式如下:[z, p, k] = tf2zp(b, a)其中,b和a分别表示传递函数的分子多项式和分母多项式,而[z, p, k]则分别表示滤波器的零点、极点和增益。

通过这种形式,我们可以清晰地了解滤波器在频域中的性能。

在MATLAB中,我们可以通过标准形式、分子-分母形式和零极点形式来表达陷波滤波器的传递函数,每种形式都有其特点和适用范围。

在实际应用中,我们可以根据需要选择合适的表达形式来分析和设计滤波器,以满足不同的工程需求。

希望本文介绍的内容能够帮助读者更好地理解和运用MATLAB中陷波滤波器的传递函数表达形式。

四、MATLAB中陷波滤波器的频域分析在MATLAB中,我们可以利用陷波滤波器的传递函数来进行频域分析。

matlab中关于数字滤波器的函数介绍

matlab中关于数字滤波器的函数介绍MATLAB下的数字信号处理实现示例一信号、系统和系统响应1、理想采样信号序列(1)首先产生信号x(n),0<=n<=50n=0:50; %定义序列的长度是50A=444.128; %设置信号有关的参数a=50*sqrt(2.0)*pi;T=0.001; %采样率w0=50*sqrt(2.0)*pi;x=A*exp(-a*n*T).*sin(w0*n*T); %pi是MATLAB定义的π,信号乘可采用“.*”close all %清除已经绘制的x(n)图形subplot(3,1,1);stem(x); %绘制x(n)的图形title(‘理想采样信号序列’);(2)绘制信号x(n)的幅度谱和相位谱k=-25:25;W=(pi/12.5)*k;X=x*(exp(-j*pi/12.5)).^(n’*k);magX=abs(X); %绘制x(n)的幅度谱subplot(3,1,2);stem(m agX);title(‘理想采样信号序列的幅度谱’);angX=angle(X); %绘制x(n)的相位谱subplot(3,1,3);stem(angX) ; title (‘理想采样信号序列的相位谱’)(3)改变参数为:1,0734.2,4.0,10==Ω==TAαn=0:50; %定义序列的长度是50A=1; %设置信号有关的参数a=0.4;T=1; %采样率w0=2.0734;x=A*exp(-a*n*T).*sin(w0*n*T); %pi是MATLAB定义的π,信号乘可采用“.*”close all %清除已经绘制的x(n)图形subplot(3,1,1);stem(x); %绘制x(n)的图形title(‘理想采样信号序列’);k=-25:25;W=(pi/12.5)*k;X=x*(exp(-j*pi/12.5)).^(n’*k);magX=abs(X); %绘制x(n)的幅度谱subplot(3,1,2);stem(magX);title(‘理想采样信号序列的幅度谱’);angX=angle(X); %绘制x(n)的相位谱subplot(3,1,3);stem(angX) ; title (‘理想采样信号序列的相位谱’)2、单位脉冲序列在MatLab中,这一函数可以用zeros函数实现:n=1:50; %定义序列的长度是50x=zeros(1,50); %注意:MATLAB中数组下标从1开始x(1)=1;close all;subplot(3,1,1);stem(x);title(‘单位冲击信号序列’);k=-25:25;X=x*(exp(-j*pi/12.5)).^(n’*k);magX=abs(X); %绘制x(n)的幅度谱subplot(3,1,2);stem(magX);title(‘单位冲击信号的幅度谱’);angX=angle(X); %绘制x(n)的相位谱subplot(3,1,3);stem(ang X) ; title (‘单位冲击信号的相位谱’)3、矩形序列n=1:50x=sign(sign(10-n)+1);close all;subplot(3,1,1);stem(x);title(‘单位冲击信号序列’);k=-25:25;X=x*(exp(-j*pi/25)).^(n’*k);magX=abs(X); %绘制x(n)的幅度谱subplot(3,1,2);stem(magX);title(‘单位冲击信号的幅度谱’);angX=angle(X); %绘制x(n)的相位谱su bplot(3,1,3);stem(angX) ; title (‘单位冲击信号的相位谱’)4、特定冲击串:)3()2(5.2)1(5.2)()(?+?+?+=nnnnnxδδδδn=1:50; %定义序列的长度是50x=zeros(1,50); %注意:MATLAB中数组下标从1开始x(1)=1;x(2)=2.5;x(3)=2.5;x(4)=1;close all;subplot(3,1,1);stem(x);title(‘单位冲击信号序列’);k=-25:25;X=x*(exp(-j*pi/12.5)).^(n’*k);magX=abs(X); %绘制x(n)的幅度谱subplot(3,1,2);stem(magX);title(‘单位冲击信号的幅度谱’);angX=angle(X); %绘制x(n)的相位谱subplot(3,1,3);stem(angX) ; title (‘单位冲击信号的相位谱’)5、卷积计算:Σ+∞?∞=?=?=mmnhmxnhnxny)()()()()(在MATLAB中。

filter在matlab中的用法

MATLAB中filter函数的用法1. 介绍在MATLAB中,filter函数是一个用于数字滤波的重要工具。

它可以对信号进行滤波处理,去除噪声、平滑数据或者突出特定频率的成分。

filter函数的使用非常灵活,可以根据不同的需求选择不同的滤波器类型和参数。

2. 基本语法filter函数的基本语法如下:y = filter(b, a, x)其中,b和a是滤波器的系数,x是待滤波的信号,y是滤波后的结果。

3. 滤波器系数滤波器系数是滤波器的关键参数,决定了滤波器的特性。

在MATLAB中,可以通过多种方式获取滤波器系数,例如使用fir1函数生成FIR滤波器系数,使用butter 函数生成巴特沃斯滤波器系数等。

以FIR滤波器为例,使用fir1函数生成滤波器系数的代码如下:order = 10; % 滤波器阶数cutoff = 0.5; % 截止频率b = fir1(order, cutoff);在上述代码中,order表示滤波器的阶数,cutoff表示截止频率。

fir1函数将根据给定的阶数和截止频率生成对应的滤波器系数。

4. 滤波器类型MATLAB中的filter函数支持多种滤波器类型,常用的包括低通滤波器、高通滤波器、带通滤波器和带阻滤波器等。

4.1 低通滤波器低通滤波器用于去除高频成分,保留低频成分。

在MATLAB中,可以使用fir1函数生成低通滤波器系数,并将其作为参数传递给filter函数。

order = 10; % 滤波器阶数cutoff = 0.5; % 截止频率b = fir1(order, cutoff, 'low');y = filter(b, 1, x);在上述代码中,’low’表示生成低通滤波器系数。

4.2 高通滤波器高通滤波器用于去除低频成分,保留高频成分。

在MATLAB中,可以使用fir1函数生成高通滤波器系数,并将其作为参数传递给filter函数。

order = 10; % 滤波器阶数cutoff = 0.5; % 截止频率b = fir1(order, cutoff, 'high');y = filter(b, 1, x);在上述代码中,’high’表示生成高通滤波器系数。

matlab的滤波器函数

matlab的滤波器函数
Matlab的滤波器函数是用于对信号进行滤波处理的工具。

它可
以用于去除信号中的噪声、增强信号的频率特征、改变信号的相位和幅度响应等。

常用的滤波器函数包括Butterworth滤波器、ChebyshevI和II滤波器、Elliptic滤波器、FIR滤波器等,它们都有不同的特点和适用范围。

Matlab的滤波器函数不仅可以对一维信
号进行滤波,在图像处理领域中也可以用于对二维图像进行滤波处理。

在使用滤波器函数时,需要选择合适的滤波器类型、滤波器阶数、截止频率等参数,以达到最佳的滤波效果。

- 1 -。

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

MATLAB下的数字信号处理实现示例一信号、系统和系统响应1、理想采样信号序列(1)首先产生信号x(n),0<=n<=50n=0:50; %定义序列的长度是50A=444.128; %设置信号有关的参数a=50*sqrt(2.0)*pi;T=0.001; %采样率w0=50*sqrt(2.0)*pi;x=A*exp(-a*n*T).*sin(w0*n*T); %pi是MATLAB定义的π,信号乘可采用“.*”close all %清除已经绘制的x(n)图形subplot(3,1,1);stem(x); %绘制x(n)的图形title(‘理想采样信号序列’);(2)绘制信号x(n)的幅度谱和相位谱k=-25:25;W=(pi/12.5)*k;X=x*(exp(-j*pi/12.5)).^(n’*k);magX=abs(X); %绘制x(n)的幅度谱subplot(3,1,2);stem(magX);title(‘理想采样信号序列的幅度谱’);angX=angle(X); %绘制x(n)的相位谱subplot(3,1,3);stem(angX) ; title (‘理想采样信号序列的相位谱’)(3)改变参数为:1,0734.2,4.0,10==Ω==TAαn=0:50; %定义序列的长度是50A=1; %设置信号有关的参数a=0.4;T=1; %采样率w0=2.0734;x=A*exp(-a*n*T).*sin(w0*n*T); %pi是MATLAB定义的π,信号乘可采用“.*”close all %清除已经绘制的x(n)图形subplot(3,1,1);stem(x); %绘制x(n)的图形title(‘理想采样信号序列’);k=-25:25;W=(pi/12.5)*k;X=x*(exp(-j*pi/12.5)).^(n’*k);magX=abs(X); %绘制x(n)的幅度谱subplot(3,1,2);stem(magX);title(‘理想采样信号序列的幅度谱’);angX=angle(X); %绘制x(n)的相位谱subplot(3,1,3);stem(angX) ; title (‘理想采样信号序列的相位谱’)2、单位脉冲序列在MatLab中,这一函数可以用zeros函数实现:n=1:50; %定义序列的长度是50x=zeros(1,50); %注意:MATLAB中数组下标从1开始x(1)=1;close all;subplot(3,1,1);stem(x);title(‘单位冲击信号序列’);k=-25:25;X=x*(exp(-j*pi/12.5)).^(n’*k);magX=abs(X); %绘制x(n)的幅度谱subplot(3,1,2);stem(magX);title(‘单位冲击信号的幅度谱’);angX=angle(X); %绘制x(n)的相位谱subplot(3,1,3);stem(ang X) ; title (‘单位冲击信号的相位谱’)3、矩形序列n=1:50x=sign(sign(10-n)+1);close all;subplot(3,1,1);stem(x);title(‘单位冲击信号序列’);k=-25:25;X=x*(exp(-j*pi/25)).^(n’*k);magX=abs(X); %绘制x(n)的幅度谱subplot(3,1,2);stem(magX);title(‘单位冲击信号的幅度谱’);angX=angle(X); %绘制x(n)的相位谱su bplot(3,1,3);stem(angX) ; title (‘单位冲击信号的相位谱’)4、特定冲击串:)3()2(5.2)1(5.2)()(−+−+−+=nnnnnxδδδδn=1:50; %定义序列的长度是50x=zeros(1,50); %注意:MATLAB中数组下标从1开始x(1)=1;x(2)=2.5;x(3)=2.5;x(4)=1;close all;subplot(3,1,1);stem(x);title(‘单位冲击信号序列’);k=-25:25;X=x*(exp(-j*pi/12.5)).^(n’*k);magX=abs(X); %绘制x(n)的幅度谱subplot(3,1,2);stem(magX);title(‘单位冲击信号的幅度谱’);angX=angle(X); %绘制x(n)的相位谱subplot(3,1,3);stem(angX) ; title (‘单位冲击信号的相位谱’)5、卷积计算:Σ+∞−∞=−=∗=mmnhmxnhnxny)()()()()(在MATLAB中。

提供了卷积函数conv,即y=conv(x,h),调用十分方便。

例如:系统:)3()2(5.2)1(5.2)()(−+−+−+=nnnnnhbδδδδ信号:500),sin()(0<≤Ω=−nnTAetxnTaαn=1:50; %定义序列的长度是50hb=zeros(1,50); %注意:MATLAB中数组下标从1开始hb(1)=1;hb(2)=2.5;hb(3)=2.5;hb(4)=1;close all;subplot(3,1,1);stem(hb);title(‘系统hb[n]’);m=1:50; %定义序列的长度是50A=444.128; %设置信号有关的参数a=50*sqrt(2.0)*pi;T=0.001; %采样率w0=50*sqrt(2.0)*pi;x=A*exp(-a*m*T).*sin(w0*m*T); %pi是MATLAB定义的π,信号乘可采用“.*”subplot(3,1,2);stem(x);title(‘输入信号x[n]’);y=conv(x,hb);subplot(3,1,3);stem(y);title(‘输出信号y[n]’);6、卷积定律验证k=-25:25;X=x*(exp(-j*pi/12.5)).^(n’*k);magX=abs(X); %绘制x(n)的幅度谱subplot(3,2,1);stem(magX);title(‘输入信号的幅度谱’);angX=angle(X); %绘制x(n)的相位谱subplot(3,2,2);stem(angX) ; title (‘输入信号的相位谱’)Hb=hb*(exp(-j*pi/12.5)).^(n’*k);magHb=abs(Hb); %绘制hb(n)的幅度谱subplot(3,2,3);stem(magHb);title(‘系统响应的幅度谱’);angHb=angle(Hb); %绘制hb(n)的相位谱subplot(3,2,4);stem(angHb) ; title (‘系统响应的相位谱’)n=1:99;k=1:99;Y=y*(exp(-j*pi/12.5)).^(n’*k);magY=abs(Y); %绘制y(n)的幅度谱subplot(3,2,5);stem(magY);title(‘输出信号的幅度谱’);angY=angle(Y); %绘制y(n)的相位谱subplot(3,2,6);stem(angY) ; title (‘输出信号的相位谱’)%以下将验证的结果显示XHb=X.*Hb;Subplot(2,1,1);stem(abs(XHb));title(‘x(n)的幅度谱与hb(n)幅度谱相乘’);Subplot(2,1,2);stem(abs(Y);title(‘y(n)的幅度谱’);axis([0,60,0,8000])二、用FFT进行信号的频谱分析1、高斯序列:⎪⎩⎪⎨⎧≤≤=−−elsenenxqpna,0150,)(2)(n=0:15; %定义序列的长度是15p=8;q=2;x=exp(-1*(n-p).^2/q);close all;subplot(3,1,1);stem(abs(fft(x)))p=8;q=4;x=exp(-1*(n-p).^2/q);subplot(3,1,2);stem(abs(fft(x)))p=8;q=8;x=exp(-1*(n-p).^2/q);subplot(3,1,3);stem(abs(fft(x)))2、衰减正弦序列:⎩⎨⎧≤≤=−elsenfnenxnb,0150,2sin)(παn=0:15; %定义序列的长度是15a=0.1;f=0.0625;x=exp(-a*n).*sin(2*pi*f*n);close all;subplot(2,1,1);stem(x);subplot(2,1,2);stem(abs(fft(x)))3、三角波序列:⎪⎩⎪⎨⎧≤≤−≤≤+=elsennnnnxc,074,830,1)( for i=0:3x(i)=i+1;x(i+4)=8-(i+4);endfor i=8:15x(i)=0;endclose all;subplot(2,1,1);stem(x);subplot(2,1,2);stem(abs(fft(x,16)))4、反三角序列:⎪⎩⎪⎨⎧≤≤−≤≤−=elsennnnnxd,074,330,4)(三、窗函数法设计FIR滤波器一、在MATLAB中产生窗函数十分简单:(1)矩形窗(Rectangle Window)调用格式:w=boxcar(n),根据长度n产生一个矩形窗w。

(2)三角窗(Triangular Window)调用格式:w=triang(n) ,根据长度n产生一个三角窗w。

(3)汉宁窗(Hanning Window)调用格式:w=hanning(n) ,根据长度n产生一个汉宁窗w。

(4)海明窗(Hamming Window)调用格式:w=hamming(n) ,根据长度n产生一个海明窗w。

(5)布拉克曼窗(Blackman Window)调用格式:w=blackman(n) ,根据长度n产生一个布拉克曼窗w。

(6)恺撒窗(Kaiser Window)调用格式:w=kaiser(n,beta) ,根据长度n和影响窗函数旁瓣的β参数产生一个恺撒窗w。

基于窗函数的FIR滤波器设计利用MATLAB提供的函数firl 来实现调用格式:firl (n,Wn,’ftype’,Window),n为阶数、Wn是截止频率(如果输入是形如[W1 W2]的矢量时,本函数将设计带通滤波器,其通带为W1<ω<W2)、ftype是滤波器的类型(低通-省略该参数、高通-ftype=high、带阻-ftype=stop)、Window是窗函数。

[例] 设计一个长度为8的线性相位FIR滤波器。

其理想幅频特性满足⎩⎨⎧≤≤=elseeHjd,04.00,1|)(|πωωWindow=boxcar(8);b=fir1(7,0.4,Window);freqz(b,1)Window=blackman(8);b=fir1(7,0.4,Window);freqz(b,1)[例] 设计线性相位带通滤波器,其长度N=15,上下边带截止频率分别为W1= 0.3π,w2=0.5πWindow=blackman(16);b=fir1(15,[0.3 0.5],Window);freqz(b,1)设计指标为:ωp=0.2π Rp=0.25dB ωa=0.3π As=50dB的低通数字FIR滤波器wp=0.2*pi;ws=0.3*pi;tr_width=ws-wp;M=ceil(6.6*pi/tr_width)+1;N=[0:1:M-1];wc=(ws+wp)/2;hd=ideal_lp(wc,M);w_ham=(boxcar(M))’;h=hd.*w_ham;[db,mag,pha,grd,w]=freqz_m(h,[1]);delta_w=2*pi/1000;Rp=-(min(db(1:1:wp/delta_w+1)));As=-round(max(db(ws/delta_w+1:1:501)));Close all;subplot(2,2,1);stem(hd);title(‘理想冲击响应’)axis([0 M-1 –0.1 0.3]);ylabel(‘hd[n]’);subplot(2,2,2);stem(w_ham);title(‘汉明窗’);axis([0 M-1 0 1.1]);ylabel(‘w[n]’);subplot(2,2,3);stem(h);title(‘实际冲击响应’);axis([0 M-1 –0.1 0.3]);ylabel(‘h[n]’);subplot(2,2,4);plot(w/pi,db); title(‘衰减幅度’);axis([0 1 -100 10]);ylabel(‘Decibles’);四、IIR滤波器的实现MATLAB中滤波器的分析和实现1、freqs函数:模拟滤波器的频率响应[例] 系统传递函数为14.013.02.0)(22++++=sssssH 的模拟滤波器,在MATLAB 中可以用以下程序来实现:a=[1 0.4 1];b=[0.2 0.3 1];%w=logspace(-1,1); %产生从到之间地0个等间距点,即50个频率点110−110 freqs(b,a,w) %根据输入的参数绘制幅度谱和相位谱2、freqz函数:数字滤波器的频率响应[例] 系统传递函数为224.013.02.0)(−−++++=zzzzzH 的模拟滤波器,在MATLAB 中可以用以下程序来实现:a=[1 0.4 1];b=[0.2 0.3 1];%根据输入的参数绘制幅度谱和相位谱,得到0到π之间128个点处的频率响应freqz(b,a,128)3、ButterWorth模拟和数字滤波器(1)butterd函数:ButterWorth滤波器阶数的选择。

相关文档
最新文档