我需要自动找到一个特定的峰来快速处理数百个光谱。我将搜索的重点重新放在我感兴趣的光谱区域上,但这总是给出一个远远不能令人满意的结果。 我尝试了不同的参数:阈值、距离和突出度,这似乎是最适合的参数,但没有找到峰值
import numpy as np
import os
import matplotlib.pyplot as plt
import scipy.signal as sig
def N_spectres(path_file):
spectres = np.loadtxt(path_file, skiprows=1, usecols=(2,3))
N_spectre = 0
i=0
ref = spectres[0,0]
while i < len(spectres[:,0]) :
if spectres[i,0]==ref :
N_spectre +=1
i+=1
return N_spectre
##############################################################################
# Data declaration
##############################################################################
file_name = "F837 FeCl3 Rux3 SiO2 E14 MAP cata_532 nm.txt"
os.chdir("DataRenishaw")
correct = 0
#############################################################
file = np.loadtxt(file_name, usecols=(2,3))
N_spectra = N_spectres(file_name)
Nb_point = int(len(file[:,0])/N_spectra)
debut = Nb_point - 230
axes = plt.gca()
plt.show()
i=0
counter=1
while i < len(file[:,0]):
peaks, _= sig.find_peaks(file[i+debut:i+Nb_point-correct, 1], prominence = 100)
plt.plot(peaks, file[i+debut:i+Nb_point-correct, 1][peaks], "xr")
plt.plot(file[i+debut:i+Nb_point-correct, 0], file[i+debut:i+Nb_point-correct, 1])
axes.set_xlabel("Nombre d'onde (cm^-1)")
axes.set_ylabel("Intensité")
#plt.plot(file[i+debut:i+Nb_point, 0], file[i+debut:i+Nb_point, 1])
plt.title(file_name+"\n Spectre n° : "+str(counter))
#plt.axis([70,350,2000,10000])
i+=Nb_point
counter+=1
plt.show()
在某些光谱中,会出现一个峰,这是我感兴趣的。 结果如下:
我该怎么做才能从find_peaks函数中获得更好的结果
目前没有回答
相关问题 更多 >
编程相关推荐