首页 > 解决方案 > 我得到了一个数字带通滤波器——它是什么?

问题描述

我得到了一个数字带通滤波器的代码片段。我不知道作者是从哪里得到的,也不知道他是如何得出的。第一行是为 IIR 设置参数。关键行是循环中根据过去计算下一个时间步长的位。

% Creates y being the BandPass filtering of input signal x.  The BandPass will
% accept components of wavelength *period* plus or minus about *delta*%.   
% Others should be rejected.
period = 30;
delta = 0.20;
beta = cos(2*pi()/20);
gamma = 1/cos(4*pi()*delta/period);
alpha = gamma - sqrt(gamma*gamma - 1);
y(1,1)=0;
y(2,1)=0;
for i = 3:3000 % We only filter first 3000 rows of x
    y(i,1) = 0.5*(1-alpha)*(x(i,1)-x(i-2,1)) + beta*(1+alpha)*y(i-1,1) - alpha*y(i-2,1);
end

如果与 Period=30 和 Delta=0.20 一起使用,它应该捕获 30 个数据点波长周围大约 20% 的循环行为。因此,数据是定期离散采样的。如果这是每分钟,那么这将发现波长接近 30 分钟的周期。我使用增量来确定过滤器的宽度。delta 和 hte 过滤环太低。增量太高,输出不是特别正弦。

你们有谁知道他使用的数学推导或家庭吗?例如,这是巴特沃斯、切比雪夫 I 型过滤器等吗?

这个公式有什么替代方法可以让我在探索中插入数字吗?

有没有办法生成与上面类似的滤波器,它会产生 90 度异相的信号?

我对 90 度异相滤波器感兴趣,这样我就可以将两者结合起来并估计当前周期的幅度和相位。我通过取输出的斜率(这是另一个 90 度异相的正弦曲线)来尝试这个,然后使用一点触发来计算当前周期的幅度和相位(如果存在)。

所以,我真正想要的是扩展上述内容,以便在我的嘈杂数据中,我可以拾取 30 分钟波长附近的任何循环活动,并将其表示为幅度和相位(即极坐标,例如工程师使用虚数来分析周期)。

我提前道歉,因为我的工程数学技能真的很生疏。我希望有人会同情我并帮助我!谢谢。

标签: filteringsignal-processingbandpass-filter

解决方案


推荐阅读