主要内容

replaceFilters

在滤波器分析器中用新滤波器替换现有滤波器

自 R2024a 起

说明

replaceFilters(fa,filt1,...,filtn) 用新滤波器替换滤波器分析器 fa 中的所有滤波器。指定的滤波器的数量必须等于 App 中当前滤波器的总数。如果您只想替换一部分滤波器,请使用 FilterNames 参量来指定要替换哪些滤波器。

示例

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

示例

示例

全部折叠

使用一个低通滤波器启动滤波器分析器。

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

使用一个高通滤波器替换低通滤波器。

d2 = designfilt("highpassfir", ...
    PassbandFrequency=0.55,StopbandFrequency=0.45);
replaceFilters(fa,d2,FilterNames="LP")
renameFilters(fa,"LP","HP")

输入参数

全部折叠

滤波器分析器句柄,指定为 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 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。

示例: FilterNames=["LP" "HP"],SampleRates=[150 3e3]

要替换的滤波器的名称,指定为字符串向量。滤波器名称是在 App 的滤波器表中用于标识不同滤波器的名称。

示例: ["LPbutter" "LPelliptic"]

数据类型: char | string

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

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

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

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

示例: [150 3e3]

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

版本历史记录

在 R2024a 中推出