2017-09-17 4 views
1

私はデータセットを持っていますdata[xi,yi,zi]私は補間値を使ってプロットしたいと思います。 scipy.interpolateでは、すべてがほぼ完璧に見えますが、補間は入力データの境界を超えていくつかの値を生成しています。例えば、zi0 < zi < 1によって束縛されていると仮定すると、rbf補間は、境界から補間された値を返すと思われる(例えば、>1)。ここに私の簡素化の試み:scipy interpolateは無制限の値を与えます

N=100 
data=[xi yi zi] 
xis = np.linspace(xi.min(), xi.max(), N) 
yis = np.linspace(yi.min(), yi.max(), N) 
XI, YI = np.meshgrid(xis,yis) 
rbf = scipy.interpolate.Rbf(xi, yi, zi, function='linear') 
ZI=rbf(XI,YI) 
print ZI.max() 
->1.01357328514 

はRBFに限界を渡すと、それは過去のzi.max()とzi.minを()行かない知っているようにする方法はありますか?

+2

再現可能な例を含めることはできますか? 'data = [xi yi zi]'は助けにならない – FTP

+0

申し訳ありません私は転記後に寝ました。下のソリューションは@Michelle、ありがとうございます。 – StarStrides

答えて

1

半径方向の基底関数を用いた補間は、与えられたデータ値の最大値よりも大きく、最小値よりも小さい値をもたらす可能性があります。 (Illustration)。これはメソッドの数学的な機能ですが、無効にするオプションを渡すことはできません。 2つの可能な解法:

  • np.clipを使用して、プロットするときにデータの最小値の間で補間をクリップします。
  • では、代わりに区分線形補間を使用します(scipy.interpolate.LinearNDInterpolator)。これは、データ値の最小値と最大値を遵守することが保証されています。
関連する問題