主要内容

impz

数字滤波器的冲激响应

说明

[h,t] = impz(b,a) 返回指定数字滤波器的冲激响应。指定一个具有分子系数 b 和分母系数 a 的数字滤波器。该函数选择采样数并在 h 中返回响应系数,在 t 中返回采样时间。

示例

[h,t] = impz(B,A,"ctf") 返回表示为Cascaded Transfer Functions (CTF) 的数字滤波器的冲激响应,分子系数为 B,分母系数为 A (自 R2024b 起)

示例

[h,t] = impz({B,A,g},"ctf") 以 CTF 格式返回数字滤波器的冲激响应。指定具有分子系数 B、分母系数 A 和跨滤波器节的尺度值 g 的滤波器。 (自 R2024b 起)

示例

[h,t] = impz(d) 返回数字滤波器 d 的冲激响应。使用 designfilt 根据频率响应设定生成 d

示例

[h,t] = impz(sos) 返回由二阶节矩阵 sos 指定的滤波器的冲激响应。

[h,t] = impz(___,n) 指定要计算的冲激响应采样。您可以使用上述任一语法指定滤波器。

示例

[h,t] = impz(___,n,fs) 返回向量 t,其中连续采样间隔 1/fs 个单位。

示例

不带输出参量的 impz(___) 用于绘制滤波器的冲激响应。

示例

示例

全部折叠

设计一个四阶低通椭圆滤波器,归一化通带频率为 0.4 弧度/采样点。指定通带波纹为 0.5 dB,阻带衰减为 20 dB。绘制冲激响应的前 50 个采样。

[b,a] = ellip(4,0.5,20,0.4);
impz(b,a,50)

Figure contains an axes object. The axes object with title Impulse Response, xlabel n (samples), ylabel Amplitude contains an object of type stem.

使用 designfilt 设计相同的滤波器。绘制其冲激响应的前 50 个采样。

d = designfilt('lowpassiir','DesignMethod','ellip','FilterOrder',4, ...
               'PassbandFrequency',0.4, ...
               'PassbandRipple',0.5,'StopbandAttenuation',20);
p = impz(d,50);
stem(p,"Filled")

Figure contains an axes object. The axes object contains an object of type stem.

使用 β=4 的凯塞窗设计 18 阶 FIR 高通滤波器。指定采样率为 100 Hz,截止频率为 30 Hz。显示滤波器的冲激响应。

b = fir1(18,30/(100/2),'high',kaiser(19,4));
impz(b,1,[],100)

Figure contains an axes object. The axes object with title Impulse Response, xlabel nT (ms), ylabel Amplitude contains an object of type stem.

使用 designfilt 设计相同的滤波器并绘制其冲激响应。

d = designfilt('highpassfir','FilterOrder',18,'SampleRate',100, ...
               'CutoffFrequency',30,'Window',{'kaiser',4});
[p,t] = impz(d,[],100);
stem(t,p,"filled")

Figure contains an axes object. The axes object contains an object of type stem.

自 R2024b 起

设计一个 40 阶低通切比雪夫 II 型数字滤波器,阻带边缘频率为 0.4,阻带衰减为 50 dB。使用 CTF 格式的滤波器系数绘制滤波器冲激响应的前 64 个采样。

[B,A] = cheby2(40,50,0.4,"ctf");

impz(B,A,"ctf",64)

Figure contains an axes object. The axes object with title Impulse Response, xlabel n (samples), ylabel Amplitude contains an object of type stem.

设计一个 30 阶带通椭圆数字滤波器,通带边缘频率为 0.3 和 0.7,通带波纹为 0.1 dB,阻带衰减为 50 dB。使用 CTF 格式的滤波器系数和增益绘制滤波器冲激响应的前 64 个采样。

[B,A,g] = ellip(30,0.1,50,[0.3 0.7],"ctf");
impz({B,A,g},"ctf",64)

Figure contains an axes object. The axes object with title Impulse Response, xlabel n (samples), ylabel Amplitude contains an object of type stem.

输入参数

全部折叠

传递函数系数,指定为向量。用 ba 将传递函数表示为

H(z)=B(z)A(z)=b1+b2z1+bnz(n1)+bn+1zna1+a2z1+amz(m1)+am+1zm

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

数据类型: double | single
复数支持:

自 R2024b 起

级联传递函数 (CTF) 系数,指定为标量、向量或矩阵。BA 分别列出级联传递函数的分子系数和分母系数。

B 的大小必须为 L×(m + 1),A 的大小必须为 L×(n + 1),其中:

  • L 表示滤波器节的数量。

  • m 表示滤波器分子的阶。

  • n 表示滤波器分母的阶。

有关级联传递函数格式和系数矩阵的详细信息,请参阅以 CTF 格式指定数字滤波器

注意

如果 A(:,1) 的任一元素不等于 1,则 impzA(:,1) 对滤波器系数进行归一化。在这种情况下,A(:,1) 必须为非零。

数据类型: double | single
复数支持:

自 R2024b 起

尺度值,指定为具有 L + 1 个元素的实数值标量或实数值向量,其中 L 是 CTF 节的数量。尺度值表示滤波器增益在级联滤波器表示的各节之间的分布。

impz 函数使用 scaleFilterSections 函数将增益应用于滤波器节,具体取决于您如何指定 g

  • 标量 - 函数将增益均匀分布在所有滤波器节上。

  • 向量 - 函数将前 L 个增益值应用于对应的滤波器节,并将最后一个增益值均匀分布在所有滤波器节上。

数据类型: double | single

数字滤波器,指定为 digitalFilter 对象。使用 designfilt 根据频率响应设定生成数字滤波器。

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

二阶节系数,指定为矩阵。sosK×6 矩阵,其中节数 K 必须大于或等于 2。如果节数小于 2,该函数将输入视为分子向量。sos 的每行对应于二阶 (biquad) 滤波器的系数。sos 的第 i 行对应于 [bi(1) bi(2) bi(3) ai(1) ai(2) ai(3)]

示例: s = [2 4 2 6 0 2;3 3 0 6 0 0] 用于指定归一化 3 dB 频率为 0.5π 弧度/采样点的三阶巴特沃斯滤波器。

数据类型: double | single
复数支持:

用于评估响应的点数,指定为正整数、非负整数向量或空向量。

  • 如果 n 是正整数,则 impz 计算冲激响应的前 n 个采样并以 (0:n-1)' 形式返回 t

  • 如果 n 是非负整数向量,则 impz 计算在向量中指定的位置处的冲激响应。

  • 如果 n 是空向量,则 impz 自动计算采样数。有关详细信息,请参阅算法

示例: impz([2 4 2 6 0 2;3 3 0 6 0 0],5) 计算巴特沃斯滤波器的冲激响应的前五个采样。

示例: impz([2 4 2 6 0 2;3 3 0 6 0 0],[0 3 2 1 4 5]) 计算巴特沃斯滤波器的冲激响应的前六个采样。

示例: impz([2 4 2 6 0 2;3 3 0 6 0 0],[],5e3) 计算设计用于对以 5 kHz 采样的信号进行滤波的巴特沃斯滤波器的冲激响应。

采样率,指定为正标量。当时间单位为秒时,fs 以赫兹表示。

数据类型: double

输出参量

全部折叠

冲激响应系数,以列向量形式返回。

采样时间,以列向量形式返回。

详细信息

全部折叠

提示

  • 您可以获得 CTF 格式的滤波器,包括缩放增益。使用数字 IIR 滤波器设计函数的输出,例如 buttercheby1cheby2ellip。在这些函数中指定 "ctf" 滤波器类型参量,并指定返回 BAg 以获取尺度值。 (自 R2024b 起)

算法

impz 使用下式对长度为 n 的冲激序列进行滤波:

filter(b,a,[1 zeros(1,n-1)])

并使用 stem 绘制结果。

注意

如果 impz 的输入为单精度,则该函数使用单精度算术计算冲激响应并返回单精度输出。

impz 自动计算 n 时,算法取决于滤波器的属性:

  • FIR 滤波器 - nb 的长度。

  • IIR 滤波器 - impz 首先使用 roots 找到传递函数的极点。

    • 如果滤波器不稳定,则选择的 n 是最大极点对应的项达到其原始值的 106 倍的点。

    • 如果滤波器稳定,则选择的 n 是最大振幅极点中的项达到其原始振幅的 5 × 10–5 倍的点。

    • 如果滤波器是振荡的且其极点仅位于单位圆上,则 impz 计算最慢振荡的五个周期。

    • 如果滤波器同时具有振荡项和阻尼项,则 n 是五个最慢振荡周期,或者是最大极点的项达到其原始振幅的 5 × 10–5 倍的点,取两者中的较大者。

impz 还允许在分子多项式中存在延迟。延迟的数量纳入采样数的计算中。

参考

[1] Lyons, Richard G. Understanding Digital Signal Processing. Upper Saddle River, NJ: Prentice Hall, 2004.

扩展功能

全部展开

版本历史记录

在 R2006a 之前推出

全部展开

另请参阅

App

函数