问题标签 [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 回答
136 浏览

python - 使用 scipy 对截止频率进行建模

我正在努力为扬声器编写交叉滤波器。此函数旨在创建一个虚拟输入信号,然后可以对其进行滤波,但是当我在调用该函数时更改频率和顺序时,它将不再在图表上正确绘制滤波后的频率。

在 scipy 网站上,他们说建议在过滤时使用二阶部分格式,以避免传递函数(ba)格式出现数字错误,但我现在不确定这是最好的解决方案,或者我在这里忽略了一个简单的错误.

看:

sosfilt:https ://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.sosfilt.html#scipy.signal.sosfilt

黄油: https ://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.butter.html#scipy.signal.butter

更新 - 这似乎发生在更高的频率(我使用 3000 Hz 截止)与 .butter、.sosfilt 和 .irrfilter、.lfilter 命令

这是代码需要为未预设的值匹配的过滤器响应

这就是我目前得到的

0 投票
2 回答
295 浏览

signal-processing - Scilab - 查找巴特沃斯系数并过滤模拟数据

对于带有加速度计的项目,我正在寻找一种过滤一些高频的方法。我不是信号专家,但我通常会根据需要阅读,使用巴特沃斯滤波器。

我为此目的使用 Scilab,我正在努力解释我的结果:我编写了以下代码(在底部)并比较了 Scilab 输出函数以在 Arduino中实现这个过滤方程:

我的问题是:

  • cnum 函数和 filter 函数有什么区别?
  • analpf(butt) 或 zpbutt 的结果系数为

“系数:Num / Den:”
1。

  1. 0.063662 0.0020264 0.0000323

我期望结果为规范形式 ,期望值为

b1 0.331785003 ; b2 0.99535501 ; b3 0.99535501 ; b4 0.331785003
a1 -0.965826145 ; a2 -0.582614466 ; a3 -0.106171201

从这里的外部软件(链接)计算,N=3,低通,Fc=5,Fs=15。

你能看看我的代码并给我一些建议来纠正它并有正确的系数 ai 和 bi 吗?

提前感谢您的支持!!

0 投票
0 回答
12 浏览

butterworth - 巴特沃斯函数

如何在八度音阶上实现巴特沃斯函数?

我有一个带有很多尖峰的信号响应,我想以非常低的截止频率实现该功能。我是编程新手,所以,我需要很多帮助。

0 投票
0 回答
146 浏览

python - Butterworth 内核生成

我想在图像上应用巴特沃斯滤镜以消除模糊。如何从滤波器系数(以下代码中的 a 和 b )生成巴特沃斯内核。

谢谢!

0 投票
0 回答
115 浏览

python - Python3中过滤后的wav文件的RMS值

我是 Python 新手,所以如果我需要澄清任何事情,请告诉我。我正在尝试获取过滤后的 wav 文件的 rms 值。我可以在 pyaudio 流中使用 USB 麦克风录制 wav 文件,并将数据存储在块中,获取该块的 rms 值并将其存储在一个数组中,然后在遍历所有样本后,它只需要该数组的最大 rms 值(全部在函数 mic0() 下完成)。我以可以应用于过滤信号的不同格式重复此过程(因为我正在读取 wav 文件而不是流)并获得相同的结果。

我想获取记录的 wav 文件,对其进行过滤,然后再次获取 rms 值。但是在我使用了 butter_bandpass_filter 函数之后,每当我尝试计算 rms 值时,我总是得到 18000 左右。在将数据存储到函数中之前,我对其进行了标准化,使其与原始信号匹配(我大胆地检查了它)但这并不影响最终结果,因为我尝试删除它(y / max_int16),它仍然给我 18000。我也尝试弄乱数据类型,但我尝试的几乎所有东西都不起作用或导致过滤后的信号显示为 0。

这是代码:

0 投票
0 回答
54 浏览

python - 如何在树莓派上使用 scipy 实现巴特沃斯带滤波器

您好我正在尝试运行代码来验证我在 RPI4 上的加速度传感器。似乎我的库没有采样率选项,'fs',因为我不断收到错误;

TypeError:butter() 得到了一个意外的关键字参数“fs”

有什么想法可以解决这个问题吗?

0 投票
0 回答
325 浏览

c++ - C 或 C++ 中的 Matlab 或 Scipy Filtfilt(零相位滤波器)

我想实现一个快速简单的 filtfilt 函数来放在我的嵌入式系统上。

我已经生成了系数 O 和 K。但是过滤器函数返回的结果与 MatLab 函数不同。

我被这个问题困住了,你有什么想法吗?

变量

C++ 代码

MATLAB 代码

结果

0 投票
0 回答
60 浏览

r - 巴特沃斯滤波器导致信号开始时出现极端异常值

我目前正在分析 R 中 100 名参与者的呼吸信号。为了为我的进一步分析步骤预处理数据,我正在使用巴特沃斯带通滤波器(阶数 = 4,0.2 - 5 Hz)。信号以 250Hz 采样,信号长度在 60000 到 300000 个数据点之间。

问题 = 运行巴特沃斯过滤器后,我遇到的问题是前 500 - 1000 个数据点成为极端异常值。请参阅:示例图单击此处。我该如何避免这种情况?还是仅删除前 1000 个数据点的唯一选择?

我很感激任何提示!

最好的,约翰逊

0 投票
0 回答
22 浏览

java - 如何在 Android Studio 中使用系数手动实现二阶带通滤波器?

我在 MATLAB 中创建了一个二阶部分带通巴特沃斯滤波器。我从我在 MATLAB 中创建的滤波器中得到了系数 b0、b1、b2、a1 和 a2。我现在想在 Android Studio 中实现相同的过滤器。有没有办法可以使用系数在 Android Studio 中手动创建过滤器?

我已经尝试查找过滤器计算的公式,但我没有找到任何适合我正在寻找的东西。

我正在使用的频率是 500 Hz。我想在 0.1-5 Hz 之间测量并将其余的过滤掉。

0 投票
1 回答
33 浏览

python - Scipy过滤器:强制SOS系数的最小值准备整数过滤器

我尝试使用 Scipy 设计一个低通滤波器(切割 40Hz 左右),它似乎适用于以下代码:

这个过滤器最终必须嵌入没有 FPU 的板上,所以我必须将 SOS 转换为整数数组。

但问题是:SOS 矩阵第一行的某些系数太低,无法转换为 32 位整数

用 0 或 1 替换几乎为空的值(一旦所有其他系数按比例放大)不起作用。

你知道一个 scipy 实用程序,它强制过滤器的设计与转换为整数兼容吗?

如果没有,您知道如何更改buttordbutterargs 以增加第一行的系数吗?(不能改变采样频率和截止频率)。

提前致谢