Das ist mein aktueller Code:
Code: Select all
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import scipy.stats as stats
import math
from scipy.optimize import curve_fit
bias = pd.read_csv('bias_voltage_2024_12_12__13_17_47.csv', delimiter=',', header=None)
data1 = pd.read_csv('sipm_dark_DD_microfc_v1_2024_12_12__14_57_27.csv', delimiter=',', header=None)
bias_voltage = bias[1][:425].values
dark_current = data1[1]
filt = np.ones(15)/15
smooth = np.convolve(dark_current, filt, 'valid')
deriv = np.gradient(smooth, bias_voltage[7:-7])
x = np.linspace(0, 32, 100)
mu = 25.4
y = np.where(x < mu, 0, 0.0002*(x - 8) * (x - mu))
deriv2 = np.gradient(y, x)
#plt.scatter(bias_voltage[7:-7], deriv, s=8, label='derivative')
plt.scatter(x, deriv2, s=8, label='theoretical data')
plt.xlabel('Bias Voltage (V)')
plt.ylabel('Current (A) / Derivative of Current (A/V)')
plt.legend()
plt.savefig('theo_deriv.png')
plt.show()



Das letzte Bild zeigt ungefähr, wie die Ableitung der experimentellen Daten aussehen sollte. Die Daten zu glätten hat mir bisher keine Probleme bereitet. Mache ich etwas falsch?
Hier der Link mit den beiden CSV-Dateien, die in meinem Beispielcode verwendet werden:
experimentelle Datendateien