问题标签 [butterworth]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
35 浏览

c# - 过滤应用多次

我正在使用此处描述的 4 阶巴特沃斯滤波器。我创建了一个按钮来过滤我的数据并将它们绘制在 Click 事件上。它工作得很好,除了一件事:如果我多次点击按钮,数据会被进一步过滤,每次都会给我一个“更平滑”的曲线。我不确定这真的是我想要摆脱的东西,但我想首先了解这种行为,因为我觉得输入数据没有被修改,因此这不应该发生。

这是我的按钮代码:

非常感谢 !

0 投票
0 回答
2411 浏览

python - 为什么它在使用 scipy.signal.filtfilt 时返回 nan

我有一个采样率为 160GHz 的日期数组,我希望对数据应用 30kHz-100kHz 带通滤波器。我写如下:

但是,结果是nan。但是,如果我像这样降低采样率,它会起作用:

这样我可以得到正确的结果,但是分析起来很粗糙。因此,当滤波器频率远低于采样率时,巴特沃斯滤波器似乎无法正常工作。我怎么解决这个问题?

0 投票
0 回答
270 浏览

python - 在 python 中应用带通巴特沃斯滤波器时遇到问题

海。我已经在 matlab 中为音频信号实现了这个带通滤波器,它按预期工作。现在,我尝试在 Python 中实现相同的东西,但它没有产生预期的结果......(它只是有点丢弃了整个信号)。这是 Matlab 代码:

这是 Python 代码(使用 scipy.signal)

任何形式的帮助将不胜感激。谢谢。过滤结果

0 投票
1 回答
308 浏览

python - R 和 Python 中 Butterworth 滤波器的不同结果

我尝试在 R 和 Python 中对相同的数据运行相同的过滤器,但得到了不同的结果,下面是代码。谁能告诉我为什么会发生这种情况以及如何解决?

Python代码:

代码:

谁能理解为什么这里有区别?

0 投票
2 回答
1842 浏览

numpy - Scipy Butter 带通没有产生预期的结果

所以我正在尝试对 wav PCM 24 位 44.1khz 文件进行带通滤波。我想做的是带通0Hz-22Khz的每个频率。

到目前为止,我已经加载了数据并可以在 Matplot 上显示它,如下所示。

在此处输入图像描述

但是当我去应用我从这里得到的带通滤波器时

http://scipy-cookbook.readthedocs.io/items/ButterworthBandpass.html

我得到以下结果: 在此处输入图像描述

所以我试图通过 100-101Hz 的带通作为测试,这是我的代码:

我不明白我哪里出错了。

谢谢

0 投票
0 回答
609 浏览

filter - 为什么我的 python Butterworth 滤波器平滑信号频谱(在频率空间中)?

对于波动的时间序列,我使用低通巴特沃斯滤波器在我的分析中排除高频噪声。它是使用 scipy.signal butter 和 filtfilt 函数实现的。

为了完整起见,输入“数据”代码看起来像

以 5 阶(记住它应用了两次)和 200kHz 的截止频率,我看到信号在此截止频率以上的预期衰减,但信号的波动(现在在频谱的本底噪声区域)被平滑。为什么?我可以/我应该避免吗?

共享 y 图在左侧显示包括本底噪声的原始频谱和相邻(右侧)显示平滑衰减尾部代替本底噪声的滤波频谱

0 投票
1 回答
41 浏览

filter - 如何降低数字滤波器的截止频率?

我在 python 中创建了一个低通巴特沃斯滤波器。有什么办法可以将截止频率降低到毫赫兹范围?甚至可能吗?下面是我使用的代码。

0 投票
1 回答
3914 浏览

python - 使用 Python 对原始信号应用合适的巴特沃斯滤波器

我从 TI AFE4490 获得了 10 秒的原始 PPG(光电体积描记图)信号。我的硬件已经过校准,我每秒使用 250 个样本来记录这些信号。最后我获得了2500分。

我使用了带有 lowcut=0.5 、 highcut=15 和 order=2 的巴特沃斯带通滤波器。您可以在下面看到我的原始和过滤信号:

顶部 = 原始光电容积图信号,底部 = 过滤的光电容积图信号

我还尝试使用带有 lowcut=15 和 order=2 的巴特沃斯低通滤波器对此进行过滤。如您所见,我的原始信号和过滤信号如下:

顶部 = 原始光电容积图信号,底部 = 过滤的光电容积图信号

我在一些文章中读到 0.5Hz 和 15Hz 是此类信号的良好低切和高切频率。

在应用过滤器之前,我使用了 Scipy Butterworth(来自 scipy docs )算法来向我展示过滤器响应,这很好。

在“开始”(开始时的高度)之后,我的过滤信号似乎很好,但我不知道为什么开始。谁能告诉我巴特沃斯过滤器的“开始”是否正常?如果是,有什么方法可以解决吗?

我感谢您的帮助。

我的代码:

该函数getAFEsignal()只是一个读取 .txt 文件并将所有内容放入两个 numpy 数组的函数。

0 投票
1 回答
689 浏览

python - Python中带有低通黄油滤波器的问题

我想过滤(低通)我拥有的信号,当它不起作用时,我开始调查它为什么不起作用。我进行了一些测试,我对巴特沃斯滤波器的行为感到有些惊讶。我在这篇文章中定义了它

如果我取一个 1000 个元素长的样本,像这样

我得到的

这个

另一方面,如果我做同样的事情,但点数不同,比如 10000,我得到一个错误的结果,我不太明白为什么:

这一次,我得到

这个

这显然是错误的。有人可以解释为什么会这样吗?在 1000 点或更少的情况下,事情似乎运行良好......

编辑:

我已经绘制了滤波器的频率响应,问题出现在这些图表上,虽然我也不知道为什么会这样。

我得到的这个

而,如果我这样做

然后我得到这个

我觉得功能 butterworth 可能出于某种原因在高分时遇到了一些麻烦?

感谢您的帮助!

0 投票
1 回答
94 浏览

r - 从低采样率信号中滤除工频

我有一些以 100Hz 采样率记录的信号。我想从信号中滤除 60Hz 频率。我正在使用 R 包中的butter()滤波器signal。但它不允许我们滤除大于奈奎斯特频率的频率。所以当我尝试应用巴特沃斯过滤器时

我明白了

Chebyshev 滤波器的手册页提到了对滤波频率的相同要求。

我可以在这里做任何事情而不对信号进行上采样吗?我可以使用哪些其他过滤器?