主要内容

addFilters

向滤波器分析器添加新滤波器

自 R2024a 起

说明

addFilters(fa,filt1,...,filtn) 将指定的滤波器导入到滤波器分析器 fa 并在活动显示画面中绘制它们的响应。如果没有活动显示画面,滤波器分析器会添加一个新的显示画面并在其上绘制滤波器。

除了上述语法中的输入参量之外,addFilters(___,Name=Value) 还使用名称-值参量指定选项。

示例

dispnum = addFilters(___) 返回与新添加的显示画面对应的标识号。如果已经有显示画面,addFilters 会返回一个空数组。

示例

全部折叠

设计一个低通滤波器,并在滤波器分析器中显示它。

d1 = designfilt("lowpassfir", ...
    PassbandFrequency=0.45,StopbandFrequency=0.55);
fa = filterAnalyzer(d1,FilterNames="LP1");

在显示画面中添加另一个低通滤波器。

d2 = designfilt("lowpassfir", ...
    PassbandFrequency=0.25,StopbandFrequency=0.35);
addFilters(fa,d2,FilterNames="LP2")

输入参数

全部折叠

滤波器分析器句柄,指定为 filterAnalyzer 对象。

输入滤波器,每个滤波器都指定为一对系数矩阵、一个元胞数组或一个 digitalFilter 对象。

有关详细信息,请参阅滤波器分析器页面上的导入滤波器

示例: b = [1 3 3 1]/6a = [3 0 1 0]/3 一起指定一个归一化 3 dB 频率为 0.5π 弧度/采样点的三阶低通巴特沃斯滤波器。

示例: sos2ctf([2 4 2 6 0 2; 3 3 0 6 0 0]) 指定一个归一化 3 dB 频率为 0.5π 弧度/采样点的三阶低通巴特沃斯滤波器。

示例: d = designfilt("lowpassiir",FilterOrder=3,HalfPowerFrequency=0.5) 指定一个归一化 3 dB 频率为 0.5π 弧度/采样点的三阶低通巴特沃斯滤波器。

滤波器系数

您可以使用滤波器分析器来分析指定为分子系数和分母系数的滤波器。如果将系数指定为 L 行矩阵

B=[b11b12b1,m+1b21b22b2,m+1bL1bL2bL,m+1],A=[a11a12a1,n+1a21a22a2,n+1aL1aL2aL,n+1],

滤波器分析器假设您已将滤波器指定为一系列 L 级联传递函数 (CTF),使得滤波器的完整传递函数为

H(z)=b11+b12z1++b1,m+1zma11+a12z1++a1,n+1zn×b21+b22z1++b2,m+1zma21+a22z1++a2,n+1zn××bL1+bL2z1++bL,m+1zmaL1+aL2z1++aL,n+1zn,

其中 m ≥ 0 是滤波器的分子阶数n ≥ 0分母阶数

  • 如果 L = 1,则 BA 是指定 IIR 滤波器传递函数的行向量。

  • 如果将 BA 都指定为列向量,则滤波器分析器假设它们表示 IIR 滤波器的传递函数。

  • 如果 B 是标量,则滤波器分析器假设您将滤波器指定为所有极点 IIR 滤波器的级联,每个节的缩放增益等于 B

  • 如果 A 是标量,则滤波器分析器假设您将滤波器指定为 FIR 滤波器的级联,每个节的缩放增益等于 1/A

注意

  • 要将二阶节矩阵转换为级联传递函数,请使用 sos2ctf 函数。

  • 要将零极点增益滤波器表示转换为级联传递函数,请使用 zp2ctf 函数。

系数和增益

如果您有独立于系数值的缩放增益,可以使用“导入滤波器”对话框在滤波器分析器中输入该增益。在命令行中,您可以将系数和增益指定为 {B,A,g} 形式的元胞数组,其中 BA 如“滤波器系数”节中所定义。

增益可以是标量整体增益或节增益向量。

  • 如果增益是标量,则滤波器分析器会将该值均匀地应用于所有级联滤波器节。

  • 如果增益是向量,则它必须比级联中的滤波器节数多一个元素。滤波器分析器将一个尺度值应用于每个滤波器节,并将最后一个值均匀地应用于所有滤波器节。

如果将系数矩阵和增益向量指定为

B=[b11b12b1,m+1b21b22b2,m+1bL1bL2bL,m+1],A=[a11a12a1,n+1a21a22a2,n+1aL1aL2aL,n+1],g=[g1g2gLgS],

滤波器分析器使用传递函数

H(z)=gS(g1b11+b12z1++b1,m+1zma11+a12z1++a1,n+1zn×g2b21+b22z1++b2,m+1zma21+a22z1++a2,n+1zn××gLbL1+bL2z1++bL,m+1zmaL1+aL2z1++aL,n+1zn).

digitalFilter 对象

您可以使用滤波器分析器来分析 digitalFilter 对象。使用 designfilt 根据频率响应设定生成或编辑数字滤波器。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | cell
复数支持:

名称-值参数

全部折叠

将可选参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。

示例: addFilters(fa,filt1,filt2,FilterNames=["LP" "HP"],SampleRates=[150 3e3]) 向指定的滤波器分析器实例 fa 添加名为 "LP""HP" 的滤波器,它们的采样率分别为 150 Hz 和 3 KHz。

要在其上绘制滤波器的显示画面,指定为显示画面编号的向量。如果不指定此参量,滤波器分析器将使用活动画面。使用其他滤波器分析器函数时,使用显示画面标识号来定位显示。标识号出现在 App 绘图区域的上方,在对应于不同显示画面的选项卡上。

示例: [1 4]

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

滤波器名称,指定为字符串向量或字符向量元胞数组。滤波器名称是在滤波器分析器滤波器表中标识不同滤波器的名称。如果不指定此参量,则会出现以下情况:

  • 如果已将滤波器指定为分子系数和分母系数,则滤波器分析器使用 num_den 作为滤波器名称,其中 num 是指定滤波器分子系数的变量,den 是指定对应分母系数的变量。

  • 如果滤波器已指定为元胞数组或对象,则滤波器分析器使用将每个元胞数组或对象指定为滤波器名称的变量。

  • 否则,滤波器分析器将使用由 Filter_n 组成的名称,其中 n 是编号,表示该滤波器添加到滤波器表中的顺序:Filter_1Filter_2,依此类推。

滤波器分析器中的滤波器名称必须唯一。如果名称已存在,App 会在名称后追加后缀数字。滤波器表显示 App 会话中已存在的名称。

示例: ["LPbutter" "LPelliptic"]

数据类型: cell | string

滤波器采样率,指定为以 Hz 为单位的标量或向量值。

  • 如果将 SampleRates 指定为标量,您指定的值将应用于所有滤波器。

  • 如果将 SampleRates 指定为向量,该向量的元素数必须与滤波器数量相等。

指定 SampleRates 时,滤波器表显示指定的采样率。

示例: [150 3e3]

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

输出参量

全部折叠

显示标识号,以整数或整数向量形式返回。如果 addFilters 添加一个以上的显示画面,则 dispnum 是向量。如果滤波器分析器使用当前显示画面,则 dispnum 是一个空数组。

版本历史记录

在 R2024a 中推出