2017-06-20 102 views
0

我有一个2D numpy数组,其中包含XY数据。轴X包含分辨率为纳秒的时间信息。我的问题发生,因为我需要比较simulated signalreal signalsimulated signal的问题在于,仿真器具有不同的步长,并且具有优化目的,如图1所示。 1.使用外插图填充缺失的数组值Python

Fig 1 - Simulated Data

在另一方面我真正的数据是由一个osciloscope收购,你的数据有记录的每个点之间的性差异1 exaclty纳秒。因此,我需要在X轴上具有相同的比例以进行正确的比较。我怎样才能获得额外的积分,使得我的数据在点之间保持一致?

编辑1

我需要这个新的点填补我的阵列,使恒步模拟数据,如显示在图2 Fig 2

绿点显示数据的例子从外推数据中提取。

+0

目前还不清楚你在问什么。您可能会显示您拥有的代码及其不良结果,以便您可以帮助您改进它。 – ImportanceOfBeingErnest

+0

不完全清楚你想要什么,但它听起来像'SciPy'插值可能有帮助(https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.interp1d.html) –

+0

请注意,虽然图像通常是有用的,在这种情况下,它们不传达必要的信息。你想插入给定的曲线吗?你想在同一个尺度上显示两条不同的曲线吗?将问题分解为5个左右的简单案例,并在问题中提供这些数字。然后清楚地说明你期望这些数字发生。 – ImportanceOfBeingErnest

回答

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() 

此代码给出的结果。

enter image description here


0

这样做的一种常见方法是简单地复制一些点(添加具有相同平均值的点不会修改大部分统计值)
因此,每次更改比例时都必须更改数据集。每次换算都需要很多时间,但这非常简单。如果您不必更改比例太多,您可以尝试。