主要内容

buttap

巴特沃斯模拟低通滤波器原型

说明

[z,p,k] = buttap(n) 返回阶数为 n 的巴特沃斯模拟低通滤波器原型的极点和增益。

示例

示例

全部折叠

设计一个 9 阶巴特沃斯模拟低通滤波器。显示其幅值和相位响应。

[z,p,k] = buttap(9);          % Butterworth filter prototype
[num,den] = zp2tf(z,p,k);     % Convert to transfer function form
freqs(num,den)                % Frequency response of analog filter

Figure contains 2 axes objects. Axes object 1 with xlabel Frequency (rad/s), ylabel Phase (degrees) contains an object of type line. Axes object 2 with xlabel Frequency (rad/s), ylabel Magnitude contains an object of type line.

输入参数

全部折叠

巴特沃斯滤波器的阶数,指定为正整数标量。

输出参量

全部折叠

系统的零点,以矩阵形式返回。z 在其列中包含分子零点。由于没有零点,z 是空矩阵。

系统的极点,以列向量形式返回。p 包含传递函数的分母系数的极点位置。

系统的增益,以标量形式返回。k 包含每个分子传递函数的增益。

算法

函数 buttap 在长度为 n 的列向量 p 中返回极点,在标量 k 中返回增益。由于没有零点,z 是空矩阵。传递函数为

H(s)=z(s)p(s)=k(sp(1))(sp(2))(sp(n))

z = [];
p = exp(sqrt(-1)*(pi*(1:2:2*n-1)/(2*n)+pi/2)).';
k = real(prod(-p));

注意

在 MATLAB® 中,函数 buttap 返回零点、极点和增益 (z、p 和 k)。然而,为 buttap 生成的 C/C++ 代码仅返回极点 p 和增益 k,因为零点 z 始终是空矩阵。

巴特沃斯滤波器由幅值响应表征,这些幅值响应在通带内具有最大平坦度,并在整体上呈现单调性。在低通情形下,平方幅值响应的前 2n-1 个导数在 ω = 0 处为零。平方幅值响应函数为

|H(ω)|2=11+(ω/ω0)2n

对应的传递函数的极点等间距地分布在左半平面的一个圆上。无论滤波器阶数如何,截止角频率 ω0 处的幅值响应始终为 1/2buttap 将 ω0 设置为 1 以实现归一化结果。

参考

[1] Parks, T. W., and C. S. Burrus. Digital Filter Design. New York: John Wiley & Sons, 1987.

扩展功能

全部展开

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

GPU 代码生成
使用 GPU Coder™ 为 NVIDIA® GPU 生成 CUDA® 代码。

版本历史记录

在 R2006a 之前推出

另请参阅

| | | |