python 峰度,python 峰值

  python 峰度,python 峰值

  大蟒求极值点主要用到科学计算库。

  1.首先可先选择一个函数或者拟合一个函数,这里选择拟合数据:np.polyfit

  将熊猫作为pdimportmatplotlib导入。py绘图为pltimportnumpy为来自scipy导入信号#的NP滤波等

  xxx=np.arange(0,1000)

  yyy=np.sin(xxx*np.pi/180)

  z1=np.polyfit(xxx,yyy,7) #用七次多项式拟合

  p1=np.poly1d(z1) #多项式系数

  打印(p1) #在屏幕上打印拟合多项式

  yvals=p1(xxx)

  plt.plot(xxx,yyy, * ,label=原始值)

  plt.plot(xxx,yvals, r ,label=polyfit values )

  plt.xlabel(x轴)

  plt.ylabel(y轴)

  plt .图例(位置=4)

  plt.title(多拟合)

  plt.show()

  得到的图形是:

  2.求波峰值,也就是极大值,得到:signal.find_peaks,官方文档:https://个文档。scipy。组织/文档/副本/引用/生成/副本。信号。寻找峰值。信号查找峰值。

  scipy.signal.find_peaks(x,height=None,threshold=None,distance=None,prominence=None,width=None,wlen=None,rel_height=0.5,plateau_size=None)

  参数:

  x:序列。有峰值的信号。

  高度:数字或多维数组或序列,可选。要求的峰高。数字、无、匹配x的数组或前者的2元素序列。第一个元素始终被解释为最小高度,第二个元素(如果提供)被解释为所需的最大高度。

  阈值:数量或多维数组或序列,可选。所需的峰值阈值,到其相邻样本的垂直距离。数字、无、匹配x的数组或前者的2元素序列。第一个元素始终被解释为最小阈值,第二个元素(如果提供)被解释为最大阈值。

  距离:数字,可选。相邻峰之间样品所需的最小水平距离(=1)。首先删除较小的峰,直到所有剩余的峰都满足条件。

  突出:数字或数组或序列,可选。所需的峰值突出度。数字、无、匹配x的数组或前者的2元素序列。第一个元素总是被解释为最小的,而第二个元素,如果提供的话,被解释为最大的所需突出。

  宽度:数字或多维数组或序列,可选。样品中所需的峰宽。数字、无、匹配x的数组或前者的2元素序列。第一个元素总是被解释为最小宽度,第二个元素(如果提供的话)被解释为所需的最大宽度。

  wlen : int,可选。用于计算峰的突出度,因此仅在给出突出度或宽度参数时使用。参见高峰_突出中的参数wlen,了解其效果的完整描述。

  rel_height : float,可选。用于计算峰宽,因此仅在给定宽度时使用。有关其效果的完整描述,请参阅峰值宽度中的参数相对高度.

  plateau _ size:数字或多维数组或序列,可选。样品中峰的平顶所需尺寸。数字、无、匹配x的数组或前者的2元素序列。第一个元素始终被解释为最小,第二个元素(如果提供)被解释为所需的最大平台大小。

  版本1.2.0中的新功能。

  #极值

  数字峰值3=信号。find _ peaks(y vals,distance=10) #distance表极大值点的距离至少大于等于10个水平单位

  print(num_peak_3[0])print(峰的数目是str(len(num_peak_3[0])

  plt.plot(xxx,yyy, * ,label=原始值)

  plt.plot(xxx,yvals, r ,label=polyfit values )

  plt.xlabel(x轴)

  plt.ylabel(y轴)

  plt .图例(位置=4)

  ii在范围内的PLT。标题(多边形拟合)(len(num _ peak _ 3[0]):

  plt.plot(num_peak_3[0][ii],yvals[num_peak_3[0][ii]], * ,markersize=10)

  plt.show()

  3.在可导的情形下,可以求导来求极值点,同时得到极大值和极小值点:np.polyder

  yyyd=np.polyder(p1,1) #1表示一阶导

  打印(yyyd)

  此时:yyyd.r即可就得导数为0的点,可以与上述的极大值点对应比较

  4.直接函数分别求极大值和极小值:signal.argrelextrema函数

  打印(yvals[信号。argrelextrema(yvals,NP。更大))#极大值的y轴,伊瓦尔斯为要求极值的序列

  打印(信号。argrelextrema(yvals,np.greater)) #极大值的x轴

  peak _ ind=信号。argrelextrema(y vals,np.greater)[0] #极大值点,改为np.less即可得到极小值点

  plt.plot(xxx,yyy, * ,label=原始值)

  plt.plot(xxx,yvals, r ,label=polyfit values )

  plt.xlabel(x轴)

  plt.ylabel(y轴)

  plt .图例(位置=4)

  plt.title(多拟合)

  PLT。plot(信号。argrelextrema(y vals,np.greater)[0],y vals[signal。argrelextrema(y vals,np.greater)], o ,markersize=10) #极大值点

  PLT。plot(信号。argrelextrema(y vals,np.less)[0],y vals[signal。argrelextrema(y vals,np.less)]",markersize=10) #极小值点

  plt.show()

  ## -结束-

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: