- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在 Python 中将带通滤波器应用于信号时,我遇到了一些麻烦。已尝试以下操作:
此外,我在音频程序Cool Edit中做了同样的过滤,并比较了以上两个测试的结果。
可以看出(我是新用户,所以我不能发布我的 png 图),FFT 和 scipy.signal 的结果非常不同。与 Cool edit 的结果相比,FFT 很接近,但不完全相同。代码如下:
# imports
from pylab import *
import os
import scipy.signal as signal
# load data
tr=loadtxt('tr6516.txt',skiprows=1)
sr = 500 # [samples/s]
nf = sr/2.0 # Nyquist frequence
W = 512 # Window widht for filtering
N=float(8192) # Fourier settings
Ns = len(tr[:,0]) # Total number of samples
# Create inpulse responce from the filter
fv=12.25
w =0.5
r =0.5*w
Hz=[0, fv-w-r, fv-w, fv+w, fv+w+r, nf]
ff=[0, 0, 1, 1, 0, 0]
b = signal.firwin2(W,Hz,ff,nfreqs=N+1,nyq=nf)
SigFilter = signal.lfilter(b, 1, tr[:,1])
# Fourier transform
X1 = fft(tr[:,1],n=int(N))
X1 = fftshift(X1)
F1 = arange(-N/2.0,N/2.0)/N*sr
# Filter data
ff=[0,1,1,0]
fv=12.25
w =0.5
r =0.5*w
Hz=[fv-w-r,fv-w,fv+w,fv+w+r]
k1=interp(-F1,Hz,ff)+interp(F1,Hz,ff)
X1_f=X1*k1
X1_f=ifftshift(X1_f)
x1_f=ifft(X1_f,n=int(N))
谁能向我解释为什么会有这种差异? Cool edit 中的过滤是使用与 scipy.signal 中相同的设置完成的(汉宁窗口,窗口宽度 512)。还是我完全弄错了。
最好的问候,安德斯
以上代码:
与酷编辑相比:
最佳答案
微小的差异可以通过库使用不同的算法来解释,这些算法累积的错误略有不同。
例如,如果您使用基数 2 FFT、 split 基数 FFT 和普通 DFT 计算 DFT,结果都会略有不同。事实上,普通 DFT 的精度比 FFT 的所有体面的实现都差,因为它使用更多的浮点运算,因此它会累积更多的误差。
这能否解释您所看到的接近(但不完全相同)的结果?
关于python - FFT滤波器与python中的lfilter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8037990/
我正在尝试将lfilter应用于一维数组的集合,即在其行对应于不同信号的二维数组上。这是代码: import numpy as np from scipy import signal from sci
使用这篇文章中的最佳答案: Reducing noise on Data 我无法重新使用代码对我的数据-> csv 文件进行去噪,该文件可以在此处找到: https://drive.google.co
我正在用 java 开发一个 butterworth-filter。因此,我一直在寻找 scipys 的实现。 过滤器的设计非常顺利,但现在我卡住了。我正在尝试实现一个使用标题中的 lfilter()
我是 Python 的新手,在过滤信号时完全卡住了。这是代码: import numpy as np import matplotlib.pyplot as plt from scipy import
全部- 我正在尝试使用 SciPy 的 signal.lfilter 函数来过滤样本向量 - 不幸的是,返回的所有内容都是 NaN 的向量。 我绘制了滤波器的频率响应,滤波器系数看起来是正确的;我相当
根据 SciPy 文档 lfilter : zi : 类似数组,可选滤波器延迟的初始条件。它是一个长度为 max(len(a),len(b))-1 的向量(或 N 维输入的向量数组)。如果 zi 为
我用 python 制作了一个原型(prototype),然后将其转换为 iOS 应用程序。不幸的是,scipy 和 numpy 的所有优秀特性在 objective-C 中都不可用。所以,显然我需要
你好, 我一直在尝试将 matlab 代码移植到 python,但遇到了这个奇怪的问题。我用谷歌搜索了一下,但没有发现表明我做错了什么的信息。 问题的核心是 Matlab 的 filter(b, a,
免责声明:我在 DSP 方面的表现可能不如我应有的水平,因此遇到的问题多于我应该让这段代码正常工作的问题。 我需要在传入信号发生时对其进行过滤。我试图使这段代码起作用,但到目前为止我还做不到。引用 s
根据他们的文档 Matlab filter()和 SciPy lfilter() ,看起来它们应该是“兼容的”。但是我有一个问题,在 Python 中移植更大的 Matlab 代码,为此我得到了 Va
受 Matlab 代码的启发,我想在 Python 中过滤信号。 Matlab有函数filter ,应该类似于 scipy.signal.lfilter (来自问题:Matlab filter() w
给定一些数据x: from pandas_datareader.data import DataReader as dr x = np.squeeze(dr('DTWEXB', 'fred').dro
我试图使用 python 的 scipy 模块来过滤信号,我想看看 lfilter 或 filtfilt 哪个更好。我尝试比较它们,并从我的 mwe 中得到以下图 import numpy as np
我正在尝试将 Matlab 的 fillgaps.m 函数移植到 Python (3.5)。但是,我在使用 scipy.signal.lfilter 时遇到了错误,而使用 Matlab 的过滤器 却没
我是一名优秀的程序员,十分优秀!