对不均匀采样的数据数组进行积分以获得“曲线”和 0 之间的区域

问题描述

我有大约 100 个严格正元素的一维数据数组。有些人会多一些,有些人会少一些。大多数元素都很小,但这个信号可能有尖峰,通常在 4 到 5 的范围内。

示例:

 data = [0.44217042317282634,0.5371139455855275,0.44094305007577467,0.5703620638886562,0.5442900940823339,0.650659771810529,...,0.7121380290819317,0.6901401693275381]

如果我绘制信号,我会得到类似的信息:

signal example

在上图中,有 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)