Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“确定”;“摇摆”;数据集的定义-Python_Python_List_Statistics_Frequency Analysis_Frequency Distribution - Fatal编程技术网

“确定”;“摇摆”;数据集的定义-Python

“确定”;“摇摆”;数据集的定义-Python,python,list,statistics,frequency-analysis,frequency-distribution,Python,List,Statistics,Frequency Analysis,Frequency Distribution,我正在开发一个软件,它需要实现一组数据的波动性。下面是我将收到的输入示例,与每个垂直像素条的亮度图合并: 很容易看出,左边距确实是摇摆不定的(即有大量的最小值/最大值),我想生成一组图像的临界点。我已经对数据应用了高斯平滑函数约10次,但一开始它似乎非常不稳定 有什么想法吗 这是我的原始代码,但它不会产生非常好的结果(对于摇摆): def本地_最大值(列表、中心、增量): 最大值=[0,0] 对于范围内的i(增量): 如果list[center+i]>maximum[1]:max=[cente

我正在开发一个软件,它需要实现一组数据的波动性。下面是我将收到的输入示例,与每个垂直像素条的亮度图合并:

很容易看出,左边距确实是摇摆不定的(即有大量的最小值/最大值),我想生成一组图像的临界点。我已经对数据应用了高斯平滑函数约10次,但一开始它似乎非常不稳定

有什么想法吗

这是我的原始代码,但它不会产生非常好的结果(对于摇摆):

def本地_最大值(列表、中心、增量):
最大值=[0,0]
对于范围内的i(增量):
如果list[center+i]>maximum[1]:max=[center+i,list[center+i]]
如果list[center-i]>maximum[1]:max=[center-i,list[center-i]]
返回最大值
def计数_最大值(列表、开始、结束、增量、阈值=10):
计数=0
对于范围内的i(开始+增量,结束-增量):
如果abs(list[i]-局部_最大值(list,i,delta)[1])
看看低通/高通/陷波/带通滤波器、傅里叶变换或小波。基本思想是有很多不同的方法来计算在不同时间段量化的信号的频率内容

如果我们能弄清楚什么是摇摆,那会有帮助的。我想说最左边的边距是摇摆的b/c,它有更多的高频内容,你可以通过傅里叶变换来可视化


如果你对红色信号进行高通滤波,你只会得到高频内容,然后你就可以测量振幅和阈值来确定摆动。但是我想wigglisness背后需要更多的形式主义。

对于类似的东西,numpy使事情变得更容易,因为它提供了有用的函数来处理向量数据,例如向每个元素添加标量、计算平均值等

例如,您可以尝试使用原始数据-wigglinness1或第一个差分-wigglinness2的过零率(取决于假设的wigglinness,如果要忽略全局趋势,您可能应该使用差分数据)。对于x,您可以从原始数据中获取感兴趣的片段或窗口,从而获得某种局部摆动的度量。 如果使用原始数据,在删除偏差后,您可能还希望将小于某个阈值的所有值设置为0,以忽略低振幅摆动

import numpy as np

def wiggliness1(x):
    #remove bias:
    x=x-np.average(x)
    #calculate zero crossing rate:
    np.sum(np.abs(np.sign(np.diff(x))))


def wiggliness(x):
    #calculate zero crossing rate of the first difference:
    return np.sum(np.abs(np.sign(np.diff(np.sign(np.diff(x))))))

您是否可以发布一个指向摆动准确定义的链接?您正在寻找的统计数据是用来表征频率特征还是振幅特征?如果您想了解一种表征摆动的方法,而不是通过编程实现该表征的方法,你在这方面可能会更幸运。我会用一个著名的低通滤波器,比如一个滤波器,而不是一次又一次地使用平滑函数。这将使以后的事情更容易调整。哇,谢谢。我考虑了一会儿,我会试着看看我是否能用函数导数的绝对值做任何事情。至于平滑滤波器,我更喜欢理论数学,所以我对统计学不太了解,但我肯定会研究这个滤波器,因为我需要做很多其他类似的事情。谢谢谢谢我来看看。我仍在试图弄清楚这些术语的含义;)谢谢,我从没想过。我想我会用它,因为我的平滑算法去除了一些关键点。。。
import numpy as np

def wiggliness1(x):
    #remove bias:
    x=x-np.average(x)
    #calculate zero crossing rate:
    np.sum(np.abs(np.sign(np.diff(x))))


def wiggliness(x):
    #calculate zero crossing rate of the first difference:
    return np.sum(np.abs(np.sign(np.diff(np.sign(np.diff(x))))))