是否存在阶跃响应为 S 曲线的线性滤波器?

信息处理 阶跃反应
2022-02-06 06:17:10

是否存在阶跃响应(或斜坡响应)为S 曲线的线性滤波器?

我认为我在这里寻找的属性是(1)时间反转对称性,以及(2)至少是连续的一阶导数。

3个回答

谐波余弦和

Hann 窗是一个矩形函数和一个截断余弦的和作为脉冲响应,它具有您所要求的品质:

汉恩窗作为脉冲响应,以及相应的阶跃响应
图 1. Hann 窗作为脉冲响应,以及相应的阶跃响应。阶跃响应的值为 over,并且在该范围之外是恒定的,因为在该范围之外脉冲响应为零。阶跃响应及其前两个导数是连续的,因为脉冲响应及其一阶导数是连续的。xsin(2πx)2π0x1

具有 Hann 脉冲响应的滤波器可以构造为截断积分滤波器和滑动离散傅里叶变换的最低非零频率 bin 的实部的(归一化)总和,两者都可以递归计算为截断IIR 滤波器

滤波器在 z 平面单位圆上具有极点(它们略微稳定),并且需要定期刷新其状态以减少舍入误差的累积。对于定点输入,截断积分器可以用扩展的位深度来实现,这样就不会累积舍入误差,也不需要刷新其状态。

复合滤波器的八度音源:

r = 20;
w = 2*pi/r;
b0 = zeros(1, r+1);
b0(1) = 1;
b0(r+1) = -1;
a0 = [1, -1];
b1 = zeros(1, r+2);
b1(1) = -1; b1(2) = cos(w); b1(r+1) = 1; b1(r+2) = -cos(w);
a1 = [1, -2*cos(w), 1];
length = r+10;
impulse = eye(1, length);
ir = filter(b0, a0, impulse) + filter(b1, a1, impulse);
normalizationfactor = 1/sum(ir)
normalizationfactor = 1/r #Alternative calculation
ir *= normalizationfactor;
plot([0:length-1], ir, "o");

八度脚本的脉冲响应
图 2. 第一个 Octave 脚本的 Hann 脉冲响应。

通过在取实部之前将滑动 DFT bin 的复传递函数乘以 ,可以在不增加成本的情况下消除不必要的单样本延迟:eiω

r = 20;
w = 2*pi/r;
b0 = zeros(1, r+1);
b0(1) = 1;
b0(r+1) = -1;
a0 = [1, -1];
b1 = zeros(1, r+2);
b1(1) = -cos(w); b1(2) = 1; b1(r+1) = cos(w); b1(r+2) = -1;
a1 = [1, -2*cos(w), 1];
length = r+10;
impulse = eye(1, length);
ir = filter(b0, a0, impulse) + filter(b1, a1, impulse);
normalizationfactor = 1/sum(ir)
normalizationfactor = 1/r #Alternative calculation
ir *= normalizationfactor;
plot([0:length-1], ir, "o");

未延迟的 Hann 滤波器脉冲响应
图 3.来自第二个 Octave 脚本的未延迟 Hann 脉冲响应。

还有其他具有谐波余弦项的窗函数,并且可以类似地实现将它们作为脉冲响应的滤波器。

B样条

B样条等分段多项式是脉冲响应形状的另一种选择。级联积分梳(CIC) 滤波器可用于实现它们。三角函数将是满足您需求的最小分段多项式函数(和 B 样条)实现非常简单:截断积分器与相同的截断积分器级联。这来自 B 样条函数的有利特性,即它们每个都是矩形函数的脉冲多次卷积。每次卷积都会增加连续导数的数量。前面关于稳定性的说明适用。

三角脉冲响应和相应的阶跃响应
图 4. 三角形脉冲响应和相应的阶跃响应。

八度音源:

r = 20;
b = zeros(1, r+1);
b(1) = 1;
b(r+1) = -1;
a = [1, -1];
length = 2*r+10;
impulse = eye(1, length);
ir = filter(b, a, filter(b, a, impulse));
normalizationfactor = 1/sum(ir)
normalizationfactor = 1/(r*r) #Alternative calculation
ir *= normalizationfactor;
plot([0:length-1], ir, "o");

八度脚本输出
图 4. Octave 脚本的三角脉冲响应。

嗨:的阶跃响应yt=ρyt1+βxt+ϵt为正βρ0 和 1 之间是 S 曲线。它被称为时域中的 koyck 分布滞后,但我从未在频域中找到非常好的讨论。如果有人知道其中一个,知识将不胜感激。下面是一个讨论频域的参考资料,但我从来没有发现它很有启发性。

https://alexsingleton.files.wordpress.com/2014/09/22-transfer-function-modelling.pdf

高斯滤波器具有(近似)高斯钟形曲线的响应,它是一种 S 形的。(滤波器的)阶数越高 = 曲线的近似性越好,对称性越好。在我的用例中,5 阶是最低的,它工作得很好,但我是模拟的。在数字方面,您可能会受到更少的限制。