我有一个包含X
和Y
数据的2D numpy数组。轴X
包含分辨率为纳秒的时间信息。我的问题出现了,因为我需要比较simulated signal
和real signal
。 simulated signal
的问题在于,具有优化目的的模拟器具有不同的步长,如图2所示。 1。
另一方面,我的实际数据是通过一个振荡器获得的,你的数据在记录的每个点之间有1 ns的差异。因此,我需要在X
轴上使用相同的比例来进行正确的比较。我怎样才能获得额外的积分来使我的数据在点之间保持恒定的步长?
编辑1
我需要这个新点填充我的数组以使模拟数据具有恒定步长,如图2中所示。
绿点显示从外推数据中提取的数据示例。
答案 0 :(得分:0)
执行此操作的常用方法是简单地复制一些点(添加具有相同平均值的点不会修改大部分统计值)
因此,每次更改比例时都必须更改数据集。每次换模都要花很多时间,但这很容易。如果您不必过多地改变比例,可以试试。
答案 1 :(得分:0)
使用scipy interpolate
模块解决了此问题。例如
<强> interpolate.py 强>
import matplotlib.pyplot as plt
from scipy import interpolate as inter
import numpy as np
Fs = 0.1
f = 0.01
sample = 10
x = np.arange(sample)
y = np.sin(2 * np.pi * f * x / Fs)
inte = inter.interp1d(x,y)
new_x = np.arange(0,9,0.1)
new_y = inte(new_x)
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.scatter(new_x,new_y,s=5,marker='.')
ax1.scatter(x,y,s=50,marker='*')
plt.show()
此代码给出以下结果。