2017-06-20 1 views
0

私はXYのデータを含む2次元配列を持っています。軸Xは、ナノ秒の分解能を有する時間情報を含む。 simulated signalreal signalを比較する必要があるため、私の問題が発生します。 simulated signalの問題は、シミュレータが最適化の目的で異なるステップサイズを持っていることです。 Fig 1 - Simulated Data外挿されたプロットを使って配列値が足りなくなるPython

1.

は、一方では、私の実際のデータはosciloscopeによって買収されたと、あなたのデータが記録された各ポイント間のdiferenceのexaclty 1ナノ秒を持っています。このため、正確な比較を行うためには、X軸に同じ縮尺を設定する必要があります。ポイント間の一定のステップでデータを作成するには、どうすれば追加ポイントを得ることができますか?図

ショーのような私は、この新しいポイントは私の配列が一定のステップでシミュレートされたデータを作るために埋めることを必要EDIT 1

、2 Fig 2

緑の点は、データの一例を示し、外挿されたデータから抽出される。

+0

それはあなたが求めているものは明らかではありません。あなたが持っているコードとその望ましくない結果を表示して、あなたの改善に役立てることができます。 – ImportanceOfBeingErnest

+0

あなたが望むものは完全にはっきりしませんが、 'SciPy'補間が役に立つかもしれません(https://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.interp1d.html) –

+0

画像はしばしば有用であり、この場合、必要な情報を伝達しない。与えられた曲線を補間しますか?同じ縮尺で2つの異なる曲線を表示したいですか? 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

一般的な方法は、いくつかの点を複製することです(同じ平均値の点を追加することでほとんどの統計値が変更されません)。
スケールを変更するたびにデータセットを変更する必要があります。スケールを変更するたびに多くの時間がかかりますが、簡単です。スケールをあまり変更しない場合は、試してみてください。

関連する問題