滤波器分析器
说明
滤波器分析器是一款交互式工具,用于可视化、分析和比较数字滤波器。使用该 App,您可以:
导入滤波器对象或滤波器系数。有关详细信息,请参阅
Import Filter
。查看、分析和比较多个数字滤波器的响应。有关详细信息,请参阅
Analysis
。查看滤波器表中的滤波器列表以及滤波器信息表中每个滤波器的详细信息。
在单独的显示画面窗口中绘制新滤波器分析图。
单独指定滤波器采样率和分析采样率。
保存当前会话的状态,包括滤波器、显示画面和分析选项,以供 App 将来的会话使用。
您可以使用 filterAnalyzer
命令行界面来添加、删除和更新滤波器、显示画面和分析选项。

打开 滤波器分析器 App
MATLAB® 工具条:在 App 选项卡的信号处理和通信下,点击 App 图标。
MATLAB 命令提示符:输入
filterAnalyzer
。
示例
设计六阶切比雪夫 1 型低通滤波器和高通滤波器,其归一化通带边缘频率为 弧度/采样点,通带波纹为 12 dB。将设计表示为四阶传递函数的级联。使用滤波器分析器显示滤波器的幅值和相位响应。
[zl,pl,kl] = cheby1(6,12,0.4); [bl,al] = zp2ctf(zl,pl,kl,SectionOrder=4); [zh,ph,kh] = cheby1(6,12,0.4,"high"); [bh,ah] = zp2ctf(zh,ph,kh,SectionOrder=4); filterAnalyzer(bl,al,bh,ah,OverlayAnalysis="phase")
设计一个 30 阶 FIR 带通滤波器,对以 2 kHz 采样的信号进行滤波。指定一个范围从 250 Hz 到 400 Hz 的阻带。使用滤波器分析器显示滤波器传递函数的极点和零点。
iirbp = designfilt("bandpassfir",FilterOrder=30, ... CutoffFrequency1=250,CutoffFrequency2=400, ... SampleRate=2000); filterAnalyzer(iirbp,Analysis="polezero")
设计通带波纹为 5 dB、阻带衰减为 60 dB 的十阶椭圆带通滤波器。指定 弧度/采样点和 弧度/采样点的通带边缘频率。将设计表示为四阶传递函数的级联。
[z,p,k] = ellip(5,5,60,[0.2 0.45]); [bb,aa] = zp2ctf(z,p,k,SectionOrder=4);
设计一个具有 5 dB 通带波纹和不对称阻带的有限冲激响应带通滤波器,用于以 2 kHz 采样的信号。
在较低频率下,阻带具有 80 dB 的衰减,过渡区域范围为 500 Hz 到 600 Hz。
在较高频率下,阻带具有 40 dB 的衰减,过渡区域范围为 750 Hz 到 900 Hz。
dfir = designfilt("bandpassfir", ... SampleRate=2e3,PassbandRipple=5, ... StopbandFrequency1=500,PassbandFrequency1=600, ... StopbandAttenuation1=80, ... PassbandFrequency2=750,StopbandFrequency2=900, ... StopbandAttenuation2=40);
启动一个滤波器分析器会话以分析滤波器。导入滤波器。在分析器选项卡上,点击导入滤波器。
要导入椭圆滤波器,请选择滤波器系数。选择
bb
作为分子,选择aa
作为分母。为滤波器名称指定Ellip
,并将采样率保留为Normalized
。点击导入。要导入 FIR 滤波器,请选择滤波器对象,选择
dfir
,然后点击导入并关闭。
或者,使用命令行界面打开滤波器分析器。默认情况下,App 显示幅值响应。只有其中一个滤波器具有采样率,因此 App 使用归一化频率显示响应。
fa = filterAnalyzer(bb,aa,dfir,FilterNames=["ellip" "dfir"]);
添加一个显示画面,并使用它来绘制滤波器的幅值响应和相位响应。
在分析器选项卡上,点击新建显示画面。
展开分析库,使叠加分析部分可见,然后点击
Phase
。通过点击滤波器表上的眼睛图标添加滤波器。
或者,使用 filterAnalysisOptions
对象以及 addDisplays
和 showFilters
函数。
opts = filterAnalysisOptions(OverlayAnalysis="phase"); addDisplays(fa,AnalysisOptions=opts) showFilters(fa,true,FilterNames=["ellip" "dfir"])
添加另一个显示画面,显示指定椭圆滤波器的级联传递函数的累积幅值响应。
点击新建显示画面以添加显示画面,然后点击椭圆滤波器的眼睛图标。
在显示选项选项卡上,点击 CTF 视图 ▼ 并选择累积。
或者,使用命令行界面。
addDisplays(fa,CTFAnalysisMode="cumulative") showFilters(fa,true,FilterNames="ellip")
再添加一个显示画面,显示 FIR 滤波器的滤波器设定模板。
在分析器选项卡上,点击新建显示画面,然后点击 FIR 滤波器的眼睛图标。该 App 以 Hz 为单位显示频率。
对于
digitalFilter
对象,App 默认显示滤波器设定模板。要删除该模板,请在显示选项选项卡上,点击模板 ▼ 并清除设定。
或者,使用命令行界面。
addDisplays(fa)
showFilters(fa,true,FilterNames="dfir")
相关示例
参数
使用滤波器表来编辑有关正在分析的滤波器的信息。
名称 - 双击此列中的条目以编辑滤波器的名称。您也可以右键点击滤波器表中的滤波器,然后选择重命名。
信号线 - 点击此列中的条目以编辑用于显示该滤波器响应的颜色。
眼图 - 点击此列中的条目以将对应的滤波器添加到当前显示画面中或将其删除。您还可以 (自 R2024b 起)将滤波器从滤波器表拖到任何显示画面上进行可视化。
游标 - 点击此列中的条目以显示或删除对应滤波器的数据游标。将光标指向此列的一个条目,以在显示一个游标和显示两个游标之间进行选择。
采样率 - 点击此列中的条目以编辑对应滤波器的采样率。
要复制一个滤波器,请在滤波器表中右键点击它,然后选择复制。
要从 App 中删除一个滤波器,请在滤波器表中右键点击该滤波器,然后选择删除。
点击导入滤波器以导入您要分析的滤波器。滤波器分析器支持这些滤波器类型。
滤波器系数
您可以使用滤波器分析器来分析指定为分子系数和分母系数的滤波器。如果将系数指定为 L 行矩阵
则滤波器分析器假设您已将滤波器指定为一系列 L 级联传递函数 (CTF),使得滤波器的完整传递函数为
其中 m ≥ 0 是滤波器的分子阶数,n ≥ 0 是分母阶数。
如果 L = 1,则 B 和 A 是指定 IIR 滤波器传递函数的行向量。
如果将 B 和 A 都指定为列向量,则滤波器分析器假设它们表示 IIR 滤波器的传递函数。
如果 B 是标量,则滤波器分析器假设您将滤波器指定为所有极点 IIR 滤波器的级联,每个节的缩放增益等于 B。
如果 A 是标量,则滤波器分析器假设您将滤波器指定为 FIR 滤波器的级联,每个节的缩放增益等于 1/A。
系数和增益
如果您有独立于系数值的缩放增益,可以使用“导入滤波器”对话框在滤波器分析器中输入该增益。在命令行中,您可以将系数和增益指定为 {B,A,g}
形式的元胞数组,其中 B 和 A 如“滤波器系数”节中所定义。
增益可以是标量整体增益或节增益向量。
如果增益是标量,则滤波器分析器会将该值均匀地应用于所有级联滤波器节。
如果增益是向量,则它必须比级联中的滤波器节数多一个元素。滤波器分析器将一个尺度值应用于每个滤波器节,并将最后一个值均匀地应用于所有滤波器节。
如果将系数矩阵和增益向量指定为
则滤波器分析器使用传递函数
digitalFilter
对象
您可以使用滤波器分析器来分析 digitalFilter
对象。使用 designfilt
根据频率响应设定生成或编辑数字滤波器。
滤波器 System object
如果您有 DSP System Toolbox™,您可以使用滤波器分析器来分析以下滤波器 System object。
System object™ |
---|
dsp.AllpassFilter (DSP System Toolbox) |
dsp.AllpoleFilter (DSP System Toolbox) |
dsp.CICCompensationDecimator (DSP System Toolbox) |
dsp.CICCompensationInterpolator (DSP System Toolbox) |
dsp.CICDecimator (DSP System Toolbox) |
dsp.CICInterpolator (DSP System Toolbox) |
|
dsp.CoupledAllpassFilter (DSP System Toolbox) |
|
dsp.Delay (DSP System Toolbox) |
dsp.Differentiator (DSP System Toolbox) |
dsp.DigitalDownConverter (DSP System Toolbox) |
dsp.DigitalUpConverter (DSP System Toolbox) |
dsp.FIRDecimator (DSP System Toolbox) |
dsp.FIRFilter (DSP System Toolbox) |
dsp.FIRHalfbandDecimator (DSP System Toolbox) |
dsp.FIRHalfbandInterpolator (DSP System Toolbox) |
dsp.FIRInterpolator (DSP System Toolbox) |
dsp.FIRRateConverter (DSP System Toolbox) |
dsp.FarrowRateConverter (DSP System Toolbox) |
dsp.FilterCascade (DSP System Toolbox) |
dsp.FourthOrderSectionFilter (DSP System Toolbox) - 滤波器分析器不支持此对象的定点算术 |
dsp.HighpassFilter (DSP System Toolbox) |
dsp.IIRFilter (DSP System Toolbox) |
dsp.IIRHalfbandDecimator (DSP System Toolbox) |
dsp.IIRHalfbandInterpolator (DSP System Toolbox) |
dsp.LowpassFilter (DSP System Toolbox) |
dsp.NotchPeakFilter (DSP System Toolbox) - 滤波器分析器不支持此 System object 的定点算术 |
dsp.ParallelFilter (DSP System Toolbox) |
dsp.SOSFilter (DSP System Toolbox) |
dsp.VariableBandwidthFIRFilter (DSP System Toolbox) |
dsp.VariableBandwidthIIRFilter (DSP System Toolbox) |
如果您也有 DSP HDL Toolbox™,可以使用滤波器分析器来分析这些滤波器 System object。
System object |
---|
|
|
滤波器分析器支持以下分析类型。要访问对每个分析可用的选项,请使用分析选项工具条部分中的分析选项按钮。
频域分析
分析 | 图标 | 选项 | 描述 |
---|---|---|---|
幅值响应 | | 幅值模式:选择 dB、线性、平方或零相位 归一化幅值:打开或关闭 | |
相位响应 | | 相位单位:选择弧度或度 相位显示:选择相位或连续 | |
群延迟响应 | | 群延迟单位:选择采样或时间 |
|
相位延迟响应 | | 相位单位:选择弧度或度 |
|
幅值估计 | | 幅值模式:选择 dB、线性或平方 归一化幅值:打开或关闭 试验次数:指定数值标量 |
|
舍入噪声功率谱 | | 试验次数:指定数值标量 |
|
时域分析
分析 | 图标 | 选项 | 描述 |
---|---|---|---|
冲激响应 | | 指定长度:选择自动或用户定义 |
|
阶跃响应 | | 指定长度:选择自动或用户定义 |
|
其他分析
分析 | 图标 | 选项 | 描述 |
---|---|---|---|
零极点图 | | 不适用 |
|
滤波器系数 | | 系数格式:选择十进制、十六进制或二进制 |
|
滤波器信息 | | 不适用 |
|
频率归一化
在滤波器分析器中,您可以使用归一化频率或您选择的采样率来显示滤波器响应。要选择如何显示频率,请在分析器选项卡的分析选项部分,将频率归一化设置为以下值之一。
自动 - 如果某些滤波器没有采样率,则 App 会使用以弧度/采样点为单位测量的归一化频率来分析滤波器响应。如果所有滤波器都有采样率,则 App 将使用以 Hz 为单位测量的循环频率来分析滤波器响应。
归一化 - App 使用以弧度/采样点为单位测量的归一化频率来分析滤波器响应。
非归一化 - App 使用以 Hz 为单位测量的循环频率来分析滤波器响应。
分析采样率
您可以通过输入分析采样率的值选择一个参考采样率,用于比较在显示画面中绘制的滤波器。您也可以通过选择最大值来选择显示画面中所有滤波器的最高采样率。要编辑采样率单位,请点击铅笔图标。
分析选项
选择分析选项以打开分析选项窗格,其中包含适用于所有频域分析的以下选项:
频率刻度 - 要以线性频率刻度显示响应,请选择线性。要使用对数频率刻度,请选择对数。
频率范围 - 要仅显示正频率上的响应,请选择单边。要显示整个频率范围上的响应,请选择双边。要显示以零为中心的整个频率范围上的响应,请选择居中。要显示自定义频率范围上的响应,请选择用户定义。
点数 - 选择要用于显示频域响应的离散傅里叶变换点数。
有关每种分析类型的可用选项列表,请参阅分析。
滤波器分析器支持以下显示画面选项:
图例 - 点击以在活动画面或所有显示画面中显示或隐藏图例。
网格 - 点击以在活动画面或所有显示画面中显示或隐藏网格。
隐藏游标 - 点击以在活动画面或所有显示画面中隐藏游标。要显示与给定滤波器对应的游标,请点击滤波器表中一个信号的游标列。
模板 - 点击以在活动画面中显示或隐藏频谱模板。您可以使用标准滤波器设定模板,也可以定义自己的模板。
将自定义模板指定为一组频率和对应的一组值。要指定您的选择,请点击用户设置。您可以使用归一化频率或以 Hz、kHz、MHz 或 GHz 为单位表示频率。您可以指定感兴趣的幅值、幅值的平方或以 dB 表示的幅值。频率和值必须为有限值。
注意
要使用标准设定模板,滤波器必须具有设计元数据。要在设计中包含元数据,请使用
digitalFilter
对象或滤波器 System object。
如果您将滤波器指定为传递函数的级联,则可以选择滤波器分析器显示逐节响应的方式。此选项仅适用于具有一个滤波器的显示画面。在显示选项选项卡中,点击 CTF 视图以在显示整体响应和逐节显示响应之间切换。点击 CTF 视图 ▼ 以选择以下选项之一:
单个 - 显示单个节的滤波器响应。
累积 - 显示累积节的滤波器响应。
用户定义 - 显示选定节或节组合的滤波器响应。要指定您的选择,请点击用户设置并将节指定为一个元胞数组。
例如,
{[1 2 3] [4 5 6]}
指示 App 显示节 1、2 和 3 的级联以及节 4、5 和 6 的级联的响应。
编程用途
filterAnalyzer(
绘制滤波器分析器中指定滤波器的响应。filt
1,...,filt
n)
如果滤波器分析器未打开,此语法将打开该 App 并绘制响应。
如果滤波器分析器已打开,此语法将在该 App 的新显示画面中绘制响应。
将输入滤波器指定为系数矩阵、元胞数组、digitalFilter
对象或 System object。有关详细信息,请参阅导入滤波器。
filterAnalyzer(
使用一个或多个名称-值参量指定非默认选项。filt
1,...,filt
n,Name=Value
)
filterAnalyzer(
打开存储在指定 MAT 文件 filename
)filename
中的滤波器分析器会话。如果滤波器分析器已打开,此语法会用新会话替换当前 App 会话。
filterAnalyzer(
将存储在指定 MAT 文件 filename
,"append")filename
中的滤波器追加到当前滤波器分析器会话中。如果滤波器分析器未打开,则此语法等效于上述语法。
[
使用上述语法中输入参量的任意组合,返回滤波器分析器的句柄对象以及与新添加的显示画面对应的编号。您也可以通过在命令行中键入 fa
,dispnums
] = filterAnalyzer(___)fa = getFilterAnalyzerHandle
来获得句柄 fa
。
版本历史记录
在 R2024a 中推出您可以将滤波器从滤波器表中拖放到任何显示画面上进行可视化。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)