4

我找不到有关此主题的任何可理解的信息。在荷兰维基百科上,我发现您可以应用 z 变换,它会以这种形式生成公式:
www.music.mcgill.ca/~gary/618/week1/img15.gif

以这个 FIR 滤波器为例:
upload.wikimedia.org/math/b/9/e/b9e2ed5184f98621922f716e5216f33d.png

使用 z 变换:
upload.wikimedia.org/math/4/d/6/4d6621be8fabf4db8816c12f34ed9877.png

在那个例子中,e^it(自然对数升到虚数单位,t = theta)代替 z: upload.wikimedia.org/math/0/6/e/06eada8fedfb492bd63bb50491b042aa.png

然后使用该函数的图并将其视为频率响应。我认为这种方法是一种计算滤波器频率响应的简单方法。但是,这种方法有效吗?当我想到一个小的延迟(它“阻塞”原始信号)时,我想到每个频率的频率响应应该是 1,因为信号没有改变,只是延迟了,但是用这种方法,我计算出频率响应为:

y(n) = 0*x(n) + 1*x(n-1)  

Z变换

H(z) = 0 + 1z^-1

代入 e^it(t=theta):

H(e^it) = 0 + 1 * e^-it

由于这会产生正弦波作为频率响应,因此我一定做错了什么,或者误解了某些东西。如果有人可以帮助我,我会很高兴!

4

4 回答 4

5

根据 rwong 的评论,系统函数 H 为您提供系统在特定频率下的相位和幅度响应。这意味着如果系统的输入为 cos[ωn] = cos[2πfn],则输出将为 a(f)cos[2πfn + Φ(f)],其中 a(f) = |H(f)| 并且 Φ(f) = 相位(H(f))。在您的情况下,幅度为 1,因为信号没有以任何方式缩放,只是在时间上移动。相移为 -ω,其中 ω 是系统正弦输入的角频率。

我希望以下内容对于 Stack Overflow 来说不是太初级,但也许回顾一下时间序列分析的基础知识会对 minibear 和其他人有所帮助。

如果您有一个脉冲响应为 h[n] = δ[n-1] 的系统(其中 δ[n] 是一个增量函数),如您的示例所示,这意味着您将输入延迟 1 个时间步. 想想这在正弦曲线的相位方面意味着什么。变化最快的正弦曲线具有 0.5 的数字频率(即 2 个样本的周期)——例如 cos[πn]。这是系列 [1,-1,...]。如果将此信号延迟 1,则得到级数 [-1,1,...],即 cos[πn - π] = cos[π(n - 1)],即输入信号相移 -π 弧度(-180 度)。查看具有 0.25 数字频率的较长周期信号(即 4 个样本的周期)——例如 cos[0.5πn]。这是系列 [1,0,-1,0,...]。单位延迟产生级数 [0,1,0,-1,...],即 cos[0.5πn - 0.5π] = cos[0.5π(n - 1)],即输入信号相移 - π/2 弧度(-90 度)。相似地,

很明显,如果输入角频率为 ω(例如 0.5π),则输出将相移 Φ = -ω。将信号想象为在逆时针路线上绕单位圆行驶的火车,其时间序列值对应于该路线上的停靠点。0.5π 的角频率意味着它在以下弧度值处停止 4 次:0、0.5π、π、1.5π。然后它返回到 0 并一遍又一遍地重复循环。如果这列火车因停靠站而延误,则对应于预定路线上的 -0.5π 弧度偏移。

回到 H(f),我希望它等于 exp(-i2πf) = exp(-iω) 是有道理的。同样,如果您的系统有 2 个延迟,则 h[n] = δ[n-2] 和 H(f) = exp(-i4πf) = exp(-2iω) - 这是 2 个停止的延迟单位圆。这就是系统/滤波器的所有频率响应告诉您的,即系统缩放和延迟每个输入正弦曲线作为频率函数的程度。

FIR 系统(即有限脉冲响应,对应于移动平均模型 [MA])是最简单的,因为它们只是前馈路径上的增量(即比例和延迟)函数的总和。IIR 系统(即无限脉冲响应,对应于自回归模型 [AR])分析起来更有趣,因为它们具有反馈路径。

于 2010-07-04T14:14:44.797 回答
1

作弊和使用 Matlab :)

为了

y(n) = 0*x(n) + 1*x(n-1)  

b=[ 0 1 ];
a = 1;
freqz(b,a)
于 2010-11-02T18:12:31.267 回答
1

一种简单的方法本质上是图形化的:您可以将其用作算法的基础,也可以手动使用它来绘制频率响应,并且“通过眼睛”快速了解响应也很有帮助。这适用于 FIR 和 IIR 滤波器。

首先在图表上绘制极点和零点以及单位圆。然后对于您要计算频率响应幅度的任何给定频率:

  • 从所有零点画线到单位圆上的对应点并计算它们的长度。
  • 对两极做同样的事情。
  • 将所有零线长相乘得到乘积 N。
  • 对极线长度执行相同的操作并将其称为 D。
  • 幅度将为 N / D。

显然,您需要对单位圆上的多个点重复上述操作。

于 2010-07-04T07:29:21.340 回答
0

这里没有问题。你做对了。这不是正弦函数。来自欧拉方程的符号函数如下: (e^jw - e^-jw)/j2

换句话说,你最终得到的是一个复数。所以说你的输入是 x[n] = cos( pi/3 * n )。系统的输出是 y[n] = H(e^jw)*x[n]

因此,您将输入乘以频率响应,将 pi/3 作为您的数字频率。cos( pi/3 * n ) = ( e^pi/3*n + e^-pi/3*n)/2。因此,将您的输入视为两个独立的信号,一个频率为 pi/3,另一个频率为 -pi/3。你最终的输出是 e^-j(pi/3) * e^(pi/3*n) + e^j(pi/3) * e^(-pi/3*n) 这是等于 2*cos(-pi/3*n - pi/3)。这是意料之中的,因为信号被延迟了。

此外,将正弦波作为频率响应并没有错。

于 2012-02-24T00:06:06.193 回答