Pythonで滑らかな曲線を描く(補間法)

2564 ワード

必要なライブラリの実装
numpy、scipy、matplotlib
必要な方法の実装
補間
  • nearest:最近接補間法
  • zero:階段補間
  • slinear:線形補間
  • quadratic、cubic:2、3次Bスプライン補間
  • フィットと補間の違い
    簡単に言えば、補間は既存のデータに基づいて埋め込まれ、最後に生成された曲線は必ず既存の点を通過する.
    フィットは、既存のデータによって曲線係数を調整し、曲線と既知の点セットの差(最小二乗)を最小にし、最後に生成された曲線が必ずしも既存の点を通過するとは限らない.
    コード実装
    # -*- coding: utf-8 -*-
    
    #     
    #       
    import numpy as np
    #        
    from scipy import interpolate
    #      
    import matplotlib.pyplot as plt
    #         
    import random
    
    # random.randint(0, 10)   0-10         
    # y        10    ,  y   
    y = np.array([random.randint(0, 10) for _ in range(10)])
    # x     ,  x   
    x = np.array([num for num in range(10)])
    
    #       x  ,   0 9   0.5 18  
    xnew = np.arange(0, 9, 0.5)
    
    """
    kind  :
    nearest、zero、slinear、quadratic、cubic
        func
    """
    func = interpolate.interp1d(x, y, kind='cubic')
    #   xnew func    ynew,xnew     ynew  
    ynew = func(xnew)
    
    #     
    #   
    plt.plot(x, y, 'ro-')
    #           
    plt.plot(xnew, ynew)
    plt.show()

    注意事項
  • x,yは元のデータ(少量)
  • xnewは配列であり、条件:x
  • 例えば、xの最小値は-2.931であり、最大値は10.312である.xnewの左境界は-2.931未満、右境界は10.312より大きい.もちろんピッチにも注意したほうがいいですが、xの精度
  • より小さいほうがいいです.
  • funcは関数で、中のパラメータx,y,kind,x,yは元のデータのx,y,kindは指定する方法
  • である.
  • ynewはxnew配列とfunc関数によって
  • を生成する必要がある.
  • 理論上xnew配列内の値が多ければ多いほど、生成された曲線は滑らかになる
  • である.
    ブログ参照