最近在帮朋友做EMD变换 其中需要寻找变换波形的极大值 因为网上大多是寻找最大值,找不到合适的,所以自己写了段python代码,本人学生小白,初学者,不足之处请多多指教。
原理就是 寻找二阶导数小于0的点就是极大值,转换到离散的中就是二阶差分小于0的点(其中一阶差分需要大于零)
返回的是给定数组极大值的下标。
时间仓促也没有做优化,写的也很粗糙。
import numpy as np
def find_max(temp):
i = 0
diff1_num = np.zeros(np.size(temp)-1)
while i<np.size(temp)-1 :
diff1_num[i] = temp[i+1] - temp[i]
if diff1_num[i] > 0:
diff1_num[i] = 1
else:
diff1_num[i] = 0
i = i + 1
j = 0
diff2_num = np.zeros(np.size(diff1_num)-1)
count_1 =[]
k = 0
while j<np.size(diff1_num)-1:
diff2_num[j] = diff1_num[j+1] - diff1_num[j]
if diff2_num[j] < 0:
count_1.append(j) #n
k