Ableitung geglätteter Daten in Python
Posted: 30 Dec 2024, 17:54
Ich habe das Problem, die Ableitung einiger experimenteller Daten zu ermitteln. Ich habe versucht, die erhaltenen Daten zu glätten, da die ursprüngliche Ableitung für mich keinen Sinn ergab. Ich habe ein Bild mit meinen experimentellen Daten und einer theoretischen Kurve angehängt, wie die Daten aussehen sollten. Dann habe ich zum Vergleich die Ableitung der experimentellen und theoretischen Daten herangezogen.
Das ist mein aktueller Code:



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
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