主要内容

grpdelay

平均滤波器延迟(群延迟)

说明

[gd,w] = grpdelay(b,a,n) 返回指定数字滤波器的群延迟响应。指定一个具有分子系数 b 和分母系数 a 的数字滤波器。该函数在 gd 中返回 n 点群延迟响应向量和返回对应的角频率向量 w

[gd,w] = grpdelay(B,A,"ctf",n) 返回表示为Cascaded Transfer Functions (CTF) 的数字滤波器的 n 点群延迟响应,分子系数为 B,分母系数为 A (自 R2024b 起)

示例

[gd,w] = grpdelay({B,A,g},"ctf",n) 返回 CTF 格式的数字滤波器的 n 点群延迟响应。指定具有分子系数 B、分母系数 A 和跨滤波器节的尺度值 g 的滤波器。 (自 R2024b 起)

示例

[gd,w] = grpdelay(d,n) 返回数字滤波器 dn 点群延迟响应。

示例

[gd,w] = grpdelay(sos,n) 返回对应于二阶节矩阵 sosn 点群延迟响应。

示例

[gd,w] = grpdelay(___,"whole") 返回在整个单位圆周围的 n 个采样点处的群延迟。

[gd,f] = grpdelay(___,n,fs) 返回一个数字滤波器的群延迟响应向量 gd 和对应的物理频率向量 f,该数字滤波器经过设计,可以对以速率 fs 采样的信号进行滤波。

[gd,f] = grpdelay(___,n,"whole",fs) 返回介于 0 与 fs 之间的 n 个点的频率向量。

gd = grpdelay(___,win) 返回以 gd 中提供的归一化频率计算的群延迟响应向量 win

gd = grpdelay(___,fin,fs) 返回以 fin 中提供的物理频率计算的群延迟响应向量 gd

示例

不带输出参量的 grpdelay(___) 用于绘制滤波器的群延迟响应。

示例

示例

全部折叠

设计一个归一化 3-dB 频率为 0.2π 弧度/采样点的 6 阶巴特沃斯滤波器。使用 grpdelay 显示群延迟。

[z,p,k] = butter(6,0.2);
sos = zp2sos(z,p,k);

grpdelay(sos,128)

Figure contains an axes object. The axes object with title Group Delay, xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Group delay (samples) contains an object of type line.

在同一图上绘制系统的群延迟和相位延迟。

gd = grpdelay(sos,512);

[h,w] = freqz(sos,512);
pd = -unwrap(angle(h))./w;

plot(w/pi,gd,w/pi,pd)
grid
xlabel 'Normalized Frequency (\times\pi rad/sample)'
ylabel 'Group and phase delays'
legend('Group delay','Phase delay')

Figure contains an axes object. The axes object with xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Group and phase delays contains 2 objects of type line. These objects represent Group delay, Phase delay.

使用 designfilt 设计一个归一化 3-dB 频率为 0.2π 弧度/采样点的六阶巴特沃斯滤波器。显示其群延迟响应。

d = designfilt("lowpassiir",FilterOrder=6, ...
    HalfPowerFrequency=0.2,DesignMethod="butter");
grpdelay(d)

Figure contains an axes object. The axes object with title Group Delay, xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Group delay (samples) contains an object of type line.

设计任意幅值响应的 88 阶 FIR 滤波器。该滤波器有两个通带和两个阻带。低频通带的增益是高频通带的两倍。指定采样率为 200 Hz。可视化滤波器在 10 Hz 至 78 Hz 范围内的幅值响应和相位响应。

fs = 200;
d = designfilt('arbmagfir', ...
       'FilterOrder',88, ...
       'NumBands',4, ...
       'BandFrequencies1',[0 20], ...
       'BandFrequencies2',[25 40], ...
       'BandFrequencies3',[45 65], ...
       'BandFrequencies4',[70 100], ...
       'BandAmplitudes1',[2 2], ...
       'BandAmplitudes2',[0 0], ...
       'BandAmplitudes3',[1 1], ...
       'BandAmplitudes4',[0 0], ...
       'SampleRate',fs);
freqz(d,10:1/fs:78,fs)

Figure contains 2 axes objects. Axes object 1 with title Phase, xlabel Frequency (Hz), ylabel Phase (degrees) contains an object of type line. Axes object 2 with title Magnitude, xlabel Frequency (Hz), ylabel Magnitude (dB) contains an object of type line.

计算并显示滤波器在同一频率范围内的群延迟响应。验证它是滤波器阶数的一半。

filtord(d)
ans = 
88
grpdelay(d,10:1/fs:78,fs)

Figure contains an axes object. The axes object with title Group Delay, xlabel Frequency (Hz), ylabel Group delay (samples) contains an object of type line.

自 R2024b 起

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

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

grpdelay(B,A,"ctf")

Figure contains an axes object. The axes object with title Group Delay, xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Group delay (samples) contains an object of type line.

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

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

Figure contains an axes object. The axes object with title Group Delay, xlabel Normalized Frequency ( times pi blank rad/sample), ylabel Group delay (samples) contains an object of type line.

输入参数

全部折叠

传递函数系数,指定为向量。用 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
复数支持:

要在其上计算响应的频率点的数量,指定为不小于 2 的正整数标量。当 n 不存在时,它默认为 512。为了获得最佳效果,请将 n 设置为大于滤波器阶数的值。

自 R2024b 起

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

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

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

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

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

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

注意

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

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

自 R2024b 起

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

grpdelay 函数使用 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
复数支持:

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

数据类型: double

角频率,指定为向量并以弧度/采样点表示。win 必须至少包含两个元素,否则该函数会将其解释为 nwin = π 对应于奈奎斯特频率。

频率,指定为向量。fin 必须至少包含两个元素,否则该函数会将其解释为 n。当时间单位为秒时,fin 以赫兹表示。

数据类型: double

输出参量

全部折叠

群延迟响应,以向量形式返回。如果指定 n,则 gd 的长度为 n。如果未指定 n,或指定 n 为空向量,则 gd 的长度为 512。

如果 grpdelay 的输入是单精度值,则该函数使用单精度算术运算计算群延迟。输出 h 是单精度值。

角频率,以向量形式返回。w 值的范围是从 0 到 π。如果在输入中指定 "whole",则 w 中的值的范围是从 0 到 2π。如果指定 n,则 w 的长度为 n。如果未指定 n,或指定 n 为空向量,则 w 的长度为 512。

频率,以单位为赫兹的向量形式返回。f 的值的范围是从 0 到 fs/2 Hz。如果在输入中指定 "whole",则 f 中的值的范围是从 0 到 fs Hz。如果指定 n,则 f 的长度为 n。如果未指定 n,或指定 n 为空向量,则 f 的长度为 512。

详细信息

全部折叠

提示

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

参考

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

扩展功能

全部展开

版本历史记录

在 R2006a 之前推出

全部展开