我有一个重复信号,该信号在一个大致每秒重复一次的过程的每个周期中会发生一些变化,尽管每个周期的持续时间和内容在某些参数内会有所不同。我的信号数据的每一秒都有一千个 x,y 坐标。每个周期内的一小部分但重要的数据已损坏,我想用向上的抛物线替换每个损坏的部分。
对于需要用抛物线替换的每个数据段,我有三个点的 x,y 坐标。顶点/最小值是这些点之一。而另外两个点是向上的U形即抛物线的左右顶部。换句话说,左上角是该函数域中最低 x 值的 x,y 坐标对,而右上角是该函数域中最高 x 值的 x,y 坐标对。左上和右上的 y 坐标相等,是数据段中最高的两个 y 值。
如何编写代码来绘制这条向上抛物线中的剩余数据点? 请记住,每分钟数据需要调用此函数 60 或 70 次,并且每次调用此函数时抛物线的形状/公式都需要更改,以说明这三对之间的不同关系每个结果抛物线中的 x,y 坐标。
def ReplaceCorruptedDataWithParabola(Xarray, Yarray, LeftTopX, LeftTopY
, LeftTopIndex, MinX, MinY, MinIndex
, RightTopX, RightTopY, RightTopIndex):
# Step One: Derive the formula for the upward-facing parabola using
# the following data from the three points:
LeftTopX,LeftTopY,LeftTopIndex
MinX,MinY,MinIndex
RightTopX,RightTopY,RightTopIndex
# Step Two: Use the formula derived in step one to plot the parabola in
# the places where the corrupted data used to reside:
for n in Xarray[LeftTopX:RightTopX]:
Yarray[n]=[_**The formula goes here**_]
return Yarray
注意:Xarray 和 Yarray 都是单列向量,每个索引处都有数据,将两个数组链接为 x,y 坐标集。它们都是 numpy 数组。Xarray 包含时间信息并且不会改变,但 Yarray 包含信号数据,包括将被替换为需要通过此函数计算的抛物线数据的损坏段。