AnyMath 文档

freqz

数字滤波器的频率响应。

库::`工程师`

语法

函数调用

* [参数:h],<参数:w_out>>=freqz(<参数:ba>>,<参数:n>>) -返回指定数字滤波器的频率响应。 指定具有分子系数的数字滤波器 b 和分母的系数 a. 函数返回 [参数:n]-输出参数中频率响应的点矢量 [参数:h] 和角频率的相应矢量 [参数:w_out].

* [参数:h],<参数:w_out>>=freqz(<参数:BA>>,<参数:ctf>>=true,<参数:n>>) -回报 [参数:n]-数字滤波器的点频率响应,表示为 级联传递函数(CTF)与分子系数 B 和分母的系数 A.

* [参数:h],[参数:w_out]=freqz(([参数:BA],[参数:g]),[参数:ctf]=true,[参数:n]) -回报 [参数:n]-CTF格式的数字滤波器的点频率响应。 指定具有分子系数的滤波器 B,分母的系数 a 和比例值 [参数:g] 通过过滤部分。

* [参数:h],<参数:w_out>>=freqz(<参数:sos>>,<参数:n>>) -回报 [参数:n]-对应于二阶段矩阵的基于点的复频率响应 [参数:sos].

* [参数:h],<参数:w_out>>=freqz(___,[参数:n],"整体") -回报 [参数:n]-样品在整个单位圆上的点频率响应。

* [参数:h],[参数:f_out]=freqz(___,[参数:n],[参数:fs]) -返回频率响应向量 [参数:h] 和物理频率的对应向量 [参数:f_out] 用于设计用于过滤以频率采样的信号的数字滤波器 [参数:fs].

* [参数:h],[参数:f_out]=freqz(___,[参数:n],"整体",[参数:fs]) -返回频率向量 [参数:n] 点的范围从 0 以前 [参数:fs].

* [参数:h]=freqz(___,[参数:w_in]) -返回频率响应向量 [参数:h] 根据输入参数中指定的归一化频率计算 [参数:w_in].

* [参数:h]=freqz(___,[参数:f_in],[参数:fs]) -返回频率响应向量 [参数:h] 以输入参数中指定的物理频率计算 [参数:f_in].

* freqz(___,<参数:out>=:情节) -绘制滤波器的频率响应。

争论

输入参数

# *b,a*是 传递函数的系数

+ 向量资料

Details

传递函数的系数,设为向量。 传递函数表示为 ba 如下:

数据类型

漂浮64, 漂浮物32</无翻译> 支持复数::是

# *n*是 用于评估特性的频率点的数量

+ 512 (默认情况下)| 一个正整数

Details

特性进行评价的频率点的个数,设定为至少正整数 2. 如果论点是 n 未指定,默认值为 512. 为获得最佳结果,请设置参数 n 超过筛选顺序的值。

# *B,A*是 级联传递函数的系数

+ 标量,标量 | 向量资料 | 矩阵

Details

级联传递函数的系数,指定为标量、矢量或矩阵。 在矩阵中 BA 分别列出了级联传递函数的分子和分母的系数。

矩阵 B 必须有一个大小 ,和矩阵 A ,在哪里

* -过滤器部分的数量; * -过滤器的分子的顺序; * -过滤器分母的顺序。

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

如果矩阵的任何元素 A[:,1] 不等于 1,则函数 *freqz* 通过归一化滤波器系数 A[:,1]. 在这种情况下 A[:,1] 它必须是非零。
数据类型

漂浮64, 漂浮物32</无翻译> 支持复数::是

# *g* — 比例值

+ 标量,标量 | 向量资料

Details

标度值指定为实标量或矢量,实值包含 其中的元素 -级联传递函数的节数。 比例值表示滤波器增益在级联滤波器表示的各部分之间的分布。

功能 *freqz* 使用函数将增益应用于滤波器部分 *标量筛选器* 取决于参数的设置方式 g:

* 标量,标量 -该功能在滤波器的所有部分均匀分布增益;

* 向量资料 -该功能应用第一个 将增益值应用于相应的滤波器部分,并将最后一个增益值均匀分布在所有滤波器部分。

数据类型

漂浮64, 漂浮物32</无翻译>

# *sos* — 二阶段的系数

+ 矩阵

Details

二阶段的系数,指定为矩阵。 论点 sos —这是一个大小矩阵 ,节数在哪里 必须大于或等于 2. 如果节数较少 2,该函数将输入数据处理为数值器的向量。 每行 sos 对应于二阶滤波器(biquadrate filter)的系数; -我是一根绳子 sos 回应 繝ウ繝舌シ縺ォ縺、縺縺ヲ縺ッ縺薙■繧峨r縺碑ヲァ縺上□縺辅>缧.

数据类型

漂浮64, 漂浮物32</无翻译> 支持复数::是

# *财政司司长* — 抽样调查 费率+ 标量,标量

Details

的采样率,设置为正标量。 如果时间单位是秒,则 财政司司长 以Hz表示。

数据类型

漂浮64</无翻译>

# *w* — 角频率

+ 向量资料

Details

角频率设定为矢量,测量单位为rad/count。 向量资料 w 它必须至少包含两个元素,否则函数将其解释为 [参数:n]. 参数的值 w=π 对应于奈奎斯特频率。

# *f* — 频率

+ 向量资料

Details

指定为矢量的频率。 向量资料 f 它必须至少包含两个元素,否则函数将其解释为 [参数:n]. 如果时间单位是秒,则 f 以Hz表示。

数据类型

漂浮64</无翻译>

名称-值输入参数

将可选参数对指定为 名称=值,在哪里 姓名 -参数的名称,以及 价值 -适当的值。

# *ctf* — 级联传递函数

+ 错误 (默认)| 真的

Details

频率响应输出格式:

* 错误 -函数返回数字滤波器的频率响应; * 真的 -函数返回数字滤波器的频率响应,表示为级联传递函数。

有关详细信息,请参阅级联传递函数

数据类型

布尔</无翻译>

# *出* — 输出数据的类型

+ :数据 (默认)| :剧情

Details

输出数据的类型:

* :数据 -函数返回数据; * :剧情 -函数返回一个图形。

输出参数

# *h* — 频率响应

+ 向量资料

Details

作为向量返回的频率响应。 如果论点是 [参数:n] 如果设置,则矢量 h 具有长度为 [参数:n]. 如果 [参数:n] 如果未指定或设置为空向量,则向量的长度为 h 等于 512.

如果函数的输入数据为 *freqz* 它们具有单精度,该函数使用单精度算术计算频率响应。 输出参数 h 它有一个单一的精度。

# *w* — 角频率

+ 向量资料

Details

作为矢量返回的角频率。 参数的值 w0 以前 . 如果参数作为输入给出 "整体",则向量中的值 w 会因 0 以前 . 如果给出了一个参数 [参数:n],向量 w 具有长度为 [参数:n]. 如果 [参数:n] 如果未指定或设置为空向量,则向量的长度为 w 等于 512.

# *f* — 频率

+ 向量资料

Details

频率作为矢量返回,以Hz表示。 论点 f 接受来自 0 以前 [参数:fs]/2 赫兹。 如果参数作为输入给出 "整体",则向量中的值 f 将在范围内 0 以前 [参数:fs] 赫兹。 如果给出了参数 [参数:n],向量 f 具有长度为 [参数:n]. 如果 [参数:n] 如果未指定或设置为空向量,则向量的长度为 f 等于 512.

例子:

传递函数的频率响应

Details

让我们计算并显示三阶IIR低通滤波器的幅度-频率响应,由以下传递函数描述:

让我们以多项式卷积的形式表达分子和分母。 让我们找到频率响应 2001 复盖整个单位圆的点。

import EngeeDSP.Functions: conv, freqz

b0 = 0.05634
b1 = [1  1]
b2 = [1 -1.0166 1]
a1 = [1 -0.683]
a2 = [1 -1.4461 0.7957]

b = b0 &ast; conv(b1, b2)
a = conv(a1, a2)

h, w = freqz(b, a, "whole", 2001)

让我们绘制振幅-频率响应,以dB表示。

plot(w./(maximum(w)/2), 20&ast;log10.(abs.(h)),
     xlabel = "Normalized Frequency (×π rad/sample)",
     ylabel = "Magnitude (dB)",
     legend = false,
     ylims = (-100, 20))

freqz 1

FIR滤波器的频率响应

Details

让我们设计一个低通FIR滤波器 80-顺序,使用凯撒窗口与 . 设置归一化截止频率 rad/倒计时。 让我们显示滤波器的幅频和相位特性。

import EngeeDSP.Functions: fir1, kaiser, freqz

b = fir1(80, 0.5, kaiser(81, 8))

freqz(b, 1, out = :plot)

freqz 2

二阶段的频率响应

Details

让我们计算并显示三阶IIR低通滤波器的幅度-频率响应,由以下传递函数描述:

让我们用二阶段来表达传递函数。 让我们找到频率响应 2001 复盖整个单位圆的点。

import EngeeDSP.Functions: freqz

b0 = 0.05634
b1 = [1  1]
b2 = [1 -1.0166 1]
a1 = [1 -0.683]
a2 = [1 -1.4461 0.7957]

sos1 = [b0&ast;[b1 0] [a1 0]]
sos2 = [b2 a2]

h, w = freqz([sos1; sos2], "whole", 2001)

让我们绘制振幅-频率响应,以dB表示。

plot(w./(maximum(w)/2), 20&ast;log10.(abs.(h)),
     xlabel = "Normalized Frequency (×π rad/sample)",
     ylabel = "Magnitude (dB)",
     legend = false,
     ylims = (-100, 20))

freqz 3

此外

级联传递函数

Details

将数字IIR滤波器拆分为级联部分可提高其数值稳定性并降低其对系数量化误差的敏感性。 传递函数的级联形式 方面的 传递函数 它有表格

butter cn

以CTF格式设置数字滤波器

Details

数字滤波器可以设计成CTF格式来分析、可视化和过滤信号. 滤波器通过枚举其系数来设置 BA. 您还可以通过设置标量或矢量值来按部分指定过滤器的缩放因子。 [参数:g].

过滤器的影响

形式设置系数时 -小写矩阵

假设滤波器被设置为 级联传递函数,使得滤波器的完整传递函数具有形

哪里 -过滤器分子的顺序,以及 -分母的顺序。

*如果 定义为向量,假设基本系统为单节IIR滤波器( ),在哪里 表示传递函数的分子,并且 -它的分母。

*如果 -标量,假设滤波器是具有极点的IIR滤波器的级联,并且每个级联的系统的总增益等于 .

*如果 -标量,假设滤波器是FIR滤波器的级联,每个级联的系统总增益等于 .

*要将二阶截面矩阵转换为级联传递函数,请使用函数 *sos2ctf*. *要将具有零、极点和增益的滤波器表示转换为级联传递函数,请使用该函数 *zp2ctf*.

效应和放大

如果有一个共同的尺度增益或几个尺度增益因子在滤波器系数的值之外,则可以将系数和增益指定为元组。 (B,A,g). 在使用定点运算时,缩放滤波器部分尤其重要,以确保每个滤波器部分的输出信号具有相似的幅度水平,这有助于避免由于计算精度有限而导致滤波器频率响应的不准确性。

增益可以是标量总增益或区段增益系数的向量。

*如果增益是标量的,则其值均匀地应用于级联滤波器的所有部分。

*如果增益因子是矢量,则它必须包含比滤波器节数多一个元素。 在级联中。 每个第一 比例值应用于相应的滤波器部分,最后一个值平均应用于级联滤波器的所有部分。

如果将滤波器系数矩阵和增益系数向量指定为

假设滤波器系统的传递函数具有形式

算法

数字滤波器的频率响应可以解释为在点计算的传递函数 [奥本海姆,[1]]

功能 *freqz* 定义来自您指定的分子和分母多项式(实数或复数)的传递函数,并返回复数频率响应 个数字滤波器。 频率响应是在您使用的语法确定的采样点处计算的。

功能 *freqz* 如果没有指定频率矢量作为输入参数,它通常使用FFT算法来计算频率响应。 它将频率响应计算为分子和分母的转换系数之比,用零填充到所需长度。

如果频率矢量指定为输入参数,则函数 *freqz* 计算每个频率点的多项式的值,并将分子特性的值除以分母特性的值。 为了计算多项式的值,该函数使用Horner方法。

文学作品

  1. Oppenheim,Alan V.和Ronald W.Schafer,与John R.Buck。 _实时信号处理。_第二版。 Upper Saddle River,NJ:Prentice Hall,1999。

  2. 里昂,理查德G._Understanding数字信号处理._上鞍河,NJ:普伦蒂斯霍尔,2004.