标签: signal-processing

实时时间序列数据中的峰值信号检测


更新:迄今为止 表现最佳的算法就是这个算法.


该问题探讨了用于检测实时时间序列数据中的突然峰值的稳健算法.

请考虑以下数据集:

p = [1 1 1.1 1 0.9 1 1 1.1 1 0.9 1 1.1 1 1 0.9 1 1 1.1 1 1 1 1 1.1 0.9 1 1.1 1 1 0.9 1, ...
     1.1 1 1 1.1 1 0.8 0.9 1 1.2 0.9 1 1 1.1 1.2 1 1.5 1 3 2 5 3 2 1 1 1 0.9 1 1 3, ... 
     2.6 4 3 3.2 2 1 1 0.8 4 4 …
Run Code Online (Sandbox Code Playgroud)

language-agnostic algorithm signal-processing time-series data-analysis

195
推荐指数
18
解决办法
14万
查看次数

如何以正确的方式平滑曲线?

让我们假设我们有一个可能大约给出的数据集

import numpy as np
x = np.linspace(0,2*np.pi,100)
y = np.sin(x) + np.random.random(100) * 0.2
Run Code Online (Sandbox Code Playgroud)

因此,我们有20%的数据集变化.我的第一个想法是使用scipy的单变量函数函数,但问题是这不会很好地考虑小噪声.如果你考虑频率,背景远小于信号,所以只有截止的样条可能是一个想法,但这将涉及来回傅里叶变换,这可能导致不良行为.另一种方式是移动平均线,但这也需要正确选择延迟.

任何提示/书籍或链接如何解决这个问题?

例

python signal-processing numpy data-processing scipy

170
推荐指数
8
解决办法
20万
查看次数

如何获得FFT中每个值的频率?

我有一个FFT结果.它们存储在两个double数组中:实部数组和虚部数组.如何确定与这些阵列中每个元素对应的频率?

换句话说,我想创建一个存储FFT的每个实部和虚部的频率的数组.

c# signal-processing fft

144
推荐指数
5
解决办法
13万
查看次数

使用快速傅里叶变换分析音频

我正在尝试在python中创建一个图形频谱分析器.

我目前正在读取1024字节的16位双通道44,100 Hz采样率音频流,并将两个通道的幅度平均在一起.所以现在我有256个签名短裤阵列.我现在想要使用像numpy这样的模块在该阵列上预先形成一个fft,然后使用结果创建图形频谱分析器,开始时只需32个小节.

我已经阅读了关于快速傅里叶变换和离散傅里叶变换的维基百科文章,但我仍然不清楚结果数组代表什么.这是我使用numpy在我的数组上执行fft后数组的样子:

   [ -3.37260500e+05 +0.00000000e+00j   7.11787022e+05 +1.70667403e+04j
   4.10040193e+05 +3.28653370e+05j   9.90933073e+04 +1.60555003e+05j
   2.28787050e+05 +3.24141951e+05j   2.09781047e+04 +2.31063376e+05j
  -2.15941453e+05 +1.63773851e+05j  -7.07833051e+04 +1.52467334e+05j
  -1.37440802e+05 +6.28107674e+04j  -7.07536614e+03 +5.55634993e+03j
  -4.31009964e+04 -1.74891657e+05j   1.39384348e+05 +1.95956947e+04j
   1.73613033e+05 +1.16883207e+05j   1.15610357e+05 -2.62619884e+04j
  -2.05469722e+05 +1.71343186e+05j  -1.56779748e+04 +1.51258101e+05j
  -2.08639913e+05 +6.07372799e+04j  -2.90623668e+05 -2.79550838e+05j
  -1.68112214e+05 +4.47877871e+04j  -1.21289916e+03 +1.18397979e+05j
  -1.55779104e+05 +5.06852464e+04j   1.95309737e+05 +1.93876325e+04j
  -2.80400414e+05 +6.90079265e+04j   1.25892113e+04 -1.39293422e+05j
   3.10709174e+04 -1.35248953e+05j   1.31003438e+05 +1.90799303e+05j...
Run Code Online (Sandbox Code Playgroud)

我想知道这些数字究竟代表什么,以及我如何将这些数字转换为32个柱中每一个的高度百分比.另外,我应该将2个频道平均在一起吗?

python audio signal-processing fft spectrum

107
推荐指数
3
解决办法
6万
查看次数

对卷积神经网络中一维,二维和三维卷积的直观理解

任何人都可以通过实例清楚地解释CNN(深度学习)中的1D,2D和3D卷积之间的区别吗?

signal-processing machine-learning convolution deep-learning conv-neural-network

100
推荐指数
3
解决办法
6万
查看次数

了解FFT输出

我需要一些帮助来理解DFT/FFT计算的输出.

我是一位经验丰富的软件工程师,需要解释一些智能手机加速度计读数,例如查找主要频率.不幸的是,我在十五年前的大部分EE课程中都睡过了,但过去几天我一直在阅读DFT和FFT(显然没什么用).

请不要回答"参加EE课程".如果我的雇主付钱给我,我实际上打算这样做.:)

所以这是我的问题:

我以32 Hz的频率捕获了一个信号.这是一个32秒的1秒样本,我在Excel中绘制了它.

在此输入图像描述

然后,我从哥伦比亚大学获得了一些用Java编写的FFT代码(在遵循" Java中的可靠和快速FFT "一文中的建议之后).

该程序的输出如下.我相信它正在运行就地FFT,因此它为输入和输出重复使用相同的缓冲区.

Before: 

Re: [0.887  1.645  2.005  1.069  1.069  0.69  1.046  1.847  0.808  0.617  0.792  1.384  1.782  0.925  0.751  0.858  0.915  1.006  0.985  0.97  1.075  1.183  1.408  1.575  1.556  1.282  1.06  1.061  1.283  1.701  1.101  0.702  ]

Im: [0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0 …
Run Code Online (Sandbox Code Playgroud)

java audio signal-processing fft accelerometer

80
推荐指数
4
解决办法
4万
查看次数

如何在php中检测一首歌的BPM

如何以编程方式确定歌曲的速度/ BPM?常用的算法是什么,必须考虑哪些因素?

algorithm audio signal-processing beat-detection

77
推荐指数
6
解决办法
9万
查看次数

检测波浪中的模式

我正在尝试从心电图中读取图像并检测其中的每一个主波(P波,QRS波群和T波).现在我可以读取图像并得到一个像(4.2; 4.4; 4.9; 4.7; ...)这样的矢量代表心电图中的值,这是问题的一半.我需要一种算法,可以遍历此向量并检测每个波的开始和结束时间.

以下是其中一个图表的示例:

替代文字

如果它们总是具有相同的尺寸会很容易,但它不是很有效,或者如果我知道心电图会有多少波,但它也会有所不同.有没有人有想法?

谢谢!

更新

我想要实现的例子:

鉴于波

替代文字

我可以提取矢量

[0; 0; 20; 20; 20; 19; 18; 17; 17; 17; 17; 17; 16; 16; 16; 16; 16; 16; 16; 17; 17; 18; 19; 20; 21; 22; 23; 23; 23; 25; 25; 23; 22; 20; 19; 17; 16; 16; 14; 13; 14; 13; 13; 12; 12; 12; 12; 12; 11; 11; 10; 12; 16; 22; 31; 38; 45; 51; 47; 41; 33; 26; 21; 17; 17; 16; 16; 15; …

language-agnostic algorithm pattern-recognition signal-processing machine-learning

75
推荐指数
5
解决办法
2万
查看次数

为什么FFT产生复数而不是实数?

我们遇到的所有FFT实现都会产生复杂的值(具有实部和虚部),即使算法的输入是一组离散的实数(整数).

是否仅可以用实数表示频域?

algorithm math audio signal-processing fft

73
推荐指数
5
解决办法
6万
查看次数

如何使用Scipy.signal.butter实现带通巴特沃斯滤波器

更新:

我找到了一个基于这个问题的Scipy Recipe!所以,对于任何有兴趣的人,请直接:

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


我很难实现最初为一维numpy阵列(时间序列)实现Butterworth带通滤波器的简单任务.

我必须包括的参数是sample_rate,截止频率IN HERTZ和可能的顺序(其他参数,如衰减,固有频率等对我来说更加模糊,因此任何"默认"值都可以).

我现在拥有的是这个,它似乎是一个高通滤波器,但我不确定我是否做得对:

def butter_highpass(interval, sampling_rate, cutoff, order=5):
    nyq = sampling_rate * 0.5

    stopfreq = float(cutoff)
    cornerfreq = 0.4 * stopfreq  # (?)

    ws = cornerfreq/nyq
    wp = stopfreq/nyq

    # for bandpass:
    # wp = [0.2, 0.5], ws = [0.1, 0.6]

    N, wn = scipy.signal.buttord(wp, ws, 3, 16)   # (?)

    # for hardcoded order:
    # N = order

    b, a = scipy.signal.butter(N, wn, btype='high')   # should 'high' be here for bandpass?
    sf = scipy.signal.lfilter(b, a, …
Run Code Online (Sandbox Code Playgroud)

python signal-processing scipy digital-filter

73
推荐指数
3
解决办法
10万
查看次数