2026a

# kaiserord


Kaiser window FIR 滤波器设计估计参数

函数库: TySignalProcessing

# 语法

n,Wn,beta,ftype = kaiserord(f,a,dev)
n,Wn,beta,ftype = kaiserord(f,a,dev,fs)
c = kaiserord(f,a,dev,fs,"cell")

# 说明

n,Wn,beta,ftype = kaiserord(f,a,dev) 返回滤波器阶数 n、归一化频带边缘 Wn 和形状因子 beta,它们指定用于 fir1 函数的 Kaiser 窗口。要设计一个大致满足 f、a 和 dev 给出的规格的 FIR 滤波器 b,请使用 b = fir1(n,Wn,kaiser(n+1,beta),ftype,scaleopt="noscale")。


n,Wn,beta,ftype = kaiserord(f,a,dev,fs) 使用以 Hz 为单位的采样率 fs。


c = kaiserord(f,a,dev,fs,"cell") 返回一个数组,其元素是 fir1 的参数。

# 示例

凯撒窗低通滤波器设计

设计一个奇数长度的低通滤波器。请注意,奇数长度表示偶数顺序,因此 fir1 的输入必须是偶数整数。

using TySignalProcessing
fsamp = 8000
fcuts = [1000 1500]
mags = [1 0]
devs = [0.05 0.01]

n,Wn,beta,ftype = kaiserord(fcuts,mags,devs,fsamp)
hh = fir1(n,Wn,ftype,kaiser(n+1,beta);scaleopt="noscale")

freqz(hh,1,1024,fsamp;plotfig=true)
凯撒窗带通滤波器设计

设计一个奇数长度的带通滤波器。请注意,奇数长度表示偶数顺序,因此 fir1 的输入必须是偶数整数。

using TyPlot 
using TySignalProcessing
fsamp = 8000
fcuts = [1000 1300 2210 2410]
mags = [0 1 0]
devs = [0.01 0.05 0.01]

n,Wn,beta,ftype = kaiserord(fcuts,mags,devs,fsamp)
n = n + rem(n,2)
hh = fir1(n,Wn,ftype,kaiser(n+1,beta),scaleopt = "noscale")

H,f = freqz(hh,1,1024,fsamp)
plot(f,abs.(H))
grid("on")

# 输入参数

f - 带边
向量

带边,指定为向量。f 的长度是 2*length(a)-2 。

数据类型: Float | Int

a - 频带幅度
向量

频带幅度,指定为向量。幅度在 f 定义的频带上指定。f 和 a 一起定义了一个分段常数响应函数。

数据类型: Float | Int

dev - 最大允许偏差
正向量

最大允许偏差,指定为向量。dev 是一个与 a 大小相同的向量,用于指定每个频段的输出滤波器的频率响应与其频段幅度之间的最大允许偏差。dev 中的条目指定通带纹波和阻带衰减。将 dev 中的每个条目指定为正数,表示绝对滤波器增益(无单位)。

数据类型: Float | Int

fs - 采样率
2(默认)| 正标量

采样率,指定为以 Hz 为单位测量的正标量。如果不指定参数 fs,或者指定为空向量 [],则采样率默认为 2 Hz,奈奎斯特频率为 1 Hz。使用此语法可指定缩放到特定应用程序采样率的频带边缘。f 中的频带边缘必须在 0 到 fs/2 之间。

数据类型: Float | Int

# 输出参数

n - 滤波器阶数
正整数

滤波器阶数,以正整数形式返回。

数据类型: Int

Wn - 归一化频带边缘
实向量

归一化的频带边缘,以实向量形式返回。

数据类型: Float

beta - 形状因子
正实标量

形状因子,以正实标量形式返回。参数 beta 影响窗口傅里叶变换的旁瓣衰减。

数据类型: Float

ftype - 滤波器类型
"low" | "bandpass" | "high" | "stop" | "DC-0" | "DC-1"

滤波器类型,用于 fir1,返回为:

"low" — 截止频率为 Wn 的低通滤波器。

"high" — 截止频率为 Wn 的高通滤波器。

"bandpass" — 如果 Wn 是二元素向量,则带通滤波器。

"stop" — 如果 Wn 是二元素向量,则带阻滤波器。

"DC-0" — 多频带滤波器的第一个频带是阻带。

"DC-1" — 多波段滤波器的第一个波段是通带。

数据类型: String

c - FIR 参数
单元数组

FIR 参数,以数组形式返回。

数据类型: Tuple

提示

  1. 注意区分滤波器长度和滤波器阶数的含义。滤波器长度是 FIR 滤波器中冲击响应样本的数量。通常,冲击响应的指数从 n=0 到 n=L–1,其中 L 是滤波器长度。滤波器阶数是滤波器Z变换表示中的最高幂。对于 FIR 传递函数,该表示是 z 中的多项式,其中最高功率为 ,最低功率为 。滤波器阶数比长度(L–1)小 1,也等于 z 多项式的零点数。

  2. 如果在向量偏差中,指定了跨频带的不等偏差,则使用指定的最小偏差,因为凯撒窗口方法被约束为在所有频带中生成偏差最小的滤波器。

  3. 在某些情况下,kaiserord 低估或高估了阶数 n。如果滤波器不符合规范,请尝试更高阶数,如 n+1、n+2 等,或尝试更低阶数。

  4. 如果截止频率接近 0 或奈奎斯特频率,或者偏差较大(大于 10%),则结果不准确。

# 算法

给定频域中的一组规范,kaiserord 估计将近似满足规范的最小 FIR 滤波器阶数。kaiserord 将给定的滤波器规格转换为通带和阻带纹波,并将截止频率转换为窗口 FIR 滤波器设计所需的形式。

kaiserord 使用经验导出的公式来估计低通滤波器的阶数,以及微分器和希尔伯特变换器。多频带滤波器(例如带通滤波器)的估计值来自低通设计公式。

介绍了构成凯撒窗的设计公式及其在 FIR 滤波器设计中的应用:

其中 α=–20log10δ 是以分贝表示的阻带衰减,以及:

其中,n 是滤波器阶数,Δω 是最小过渡区的宽度。

# 参考

[1] Digital Signal Processing Committee of the IEEE Acoustics, Speech, and Signal Processing Society, eds. Selected Papers in Digital Signal Processing. Vol. II. New York: IEEE Press, 1976.

[2] Kaiser, James F. “Nonrecursive Digital Filter Design Using the I0-Sinh Window Function.” Proceedings of the 1974 IEEE International Symposium on Circuits and Systems. 1974, pp. 20–23.

[3] Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. Discrete-Time Signal Processing. Upper Saddle River, NJ: Prentice Hall, 1999.

# 另请参阅

fir1 | kaiser | firpmord