找到给定输入和传递函数的数字滤波器的输出?

信息处理 过滤器 离散信号 卷积 z变换
2022-02-06 06:59:29

嘿伙计们,我有一个输入序列,它是代表图像列强度的真实值。我在二阶高通滤波器的 Z 域中也有传递函数。我有以下使用双线性变换估计的传递函数。

在此处输入图像描述

假设我的输入信号定义为x[n] = 27, 588, 1013, 255, 38。如何确定输出 y[n]?

有两种选择,一种是我确定 X[z] 然后将其乘以 H[z] 并进行逆变换。

另一个是将 H[z] 转换为 h[n] ,然后使用以下方案将其与 x[n] 进行卷积在此处输入图像描述

我将如何在代码中实现这些解决方案中的任何一个(例如,编写一种从任意 x[n] 生成 X[z] 的自动方式,或者为第二个选项编写实现 FOIL 的卷积函数)?

一个比另一个容易吗?请记住,我的信号长度也是 512 个样本,因此卷积可能非常昂贵。

2个回答

双二阶的标准差分方程:y[n] = b0*x[n]+b1*x[n-1]+b2*x[n-2]-a1*y[n-1]-a2*y[ n-2];

对于 n < -1,将所有 x[n]、y[n] 初始化为 0

b0,b1,b2 为 0.86 -1.72 0.86(分子)

a0,a1,a2 为 1 -1.71 0.73(分母)

卷积是不够的,因为您的滤波器的脉冲响应似乎是无限的。正如 Hilmar 建议的那样,您需要“实施”过滤器。查找,,直接形式'' 1 或 2。数字软件通常包含正是针对这种情况的功能。在 GNU Octave 或类似程序的情况下,该函数称为 ,,filter''。