با سلام . یه سوال داشتم . ی فایل اکسل دارم که دو تا ستون داریم که حدود 3200 تا عدد داخلشه x و y
میخوایم که نمودارش رسم بشه و smooth بشه . من تقریبا این دو کار رو انجام دادم یعنی نمودار اولیه و نمودار اسموث شده رو بوجود اوردم . حالا سوال اینجاست که چطور میتونم
بعد از اسموث پیک های مخفی اشکار کنم. و مختصات پیک ها هم در خروجی داده شود .
من کدی که نوشتم رو میزارم زحمتی اگر کسی جوابش رو میدونه بهم بگه چیکار باید بکنم کهاین حالت
deconvolution رو براش انجام بدم .
xx.png

import xlrd
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
from scipy.interpolate import interp1d
from scipy.signal import savgol_filter
from scipy.interpolate import spline
from scipy import interpolate
import numpy as np
import matplotlib.pyplot as plt
from scipy import signal
loc = "C:/Users/A2n/Downloads/1.xlsx"
wb = xlrd.open_workbook(loc)
sheet = wb.sheet_by_index(0)
sheet.cell_value(0, 0)
x = []
y = []


for i in range(sheet.nrows):
if(i!=0):
x.append(float(sheet.cell_value(i,0)))
y.append(float(sheet.cell_value(i,1)))


x=np.array(x)
y=np.array(y)


xx = np.linspace(x.min(),x.max(), 1000)


# interpolate + smooth
itp = interp1d(x,y, kind='linear')
window_size, poly_order = 101, 3
yy_sg = savgol_filter(itp(xx), window_size, poly_order)

fig, ax = plt.subplots(figsize=(7, 4))
ax.plot(x, y, 'r', label= 'Unsmoothed curve')
ax.plot(xx, yy_sg, 'k', label= "Smoothed curve")
plt.legend(loc='best')
plt.show()