对不均匀采样的数据数组进行积分以获得 'curve' 和 0 之间的区域
Integrating a data array unevenly sampled to get the area between the 'curve' and 0
我有一个包含大约 100 个严格正元素的一维数据数组。有些人会拥有更多,有些人会拥有更少。大多数元素都很小,但这个信号可能有尖峰,通常在 4 到 5 的范围内。
示例:
data = [0.44217042317282634, 0.5371139455855275,
0.44094305007577467, 0.5703620638886562,
0.5442900940823339, 0.650659771810529,
...,
0.7121380290819317, 0.6901401693275381]
如果我绘制信号,我会得到如下信息:
在上图中,有 111 个点不均匀分布。采样率根本不是恒定的。 如何计算上面蓝色阴影的面积?
一个非常重要的方面是,如果我有一个具有更多样本的相似信号,产生相同的图,我希望该区域保持不变(显而易见,但仍然如此)。
我一点都不熟悉采样率不均匀信号的积分技术。一些指导将不胜感激。谢谢!
假设你知道采样时间,你可以使用scipy:
import numpy as np
from scipy import interpolate
data = np.array([0.44217042317282634, 0.5371139455855275,
0.44094305007577467, 0.5703620638886562,
0.5442900940823339, 0.650659771810529])
discrete_time = np.array([0.11,0.34,0.55,0.61,0.8,0.967])
area = interpolate.InterpolatedUnivariateSpline(discrete_time, data, k=1).integral(0,1)
print(area)
我有一个包含大约 100 个严格正元素的一维数据数组。有些人会拥有更多,有些人会拥有更少。大多数元素都很小,但这个信号可能有尖峰,通常在 4 到 5 的范围内。
示例:
data = [0.44217042317282634, 0.5371139455855275,
0.44094305007577467, 0.5703620638886562,
0.5442900940823339, 0.650659771810529,
...,
0.7121380290819317, 0.6901401693275381]
如果我绘制信号,我会得到如下信息:
在上图中,有 111 个点不均匀分布。采样率根本不是恒定的。 如何计算上面蓝色阴影的面积?
一个非常重要的方面是,如果我有一个具有更多样本的相似信号,产生相同的图,我希望该区域保持不变(显而易见,但仍然如此)。
我一点都不熟悉采样率不均匀信号的积分技术。一些指导将不胜感激。谢谢!
假设你知道采样时间,你可以使用scipy:
import numpy as np
from scipy import interpolate
data = np.array([0.44217042317282634, 0.5371139455855275,
0.44094305007577467, 0.5703620638886562,
0.5442900940823339, 0.650659771810529])
discrete_time = np.array([0.11,0.34,0.55,0.61,0.8,0.967])
area = interpolate.InterpolatedUnivariateSpline(discrete_time, data, k=1).integral(0,1)
print(area)