Update
This commit is contained in:
@@ -1,58 +1,31 @@
|
||||
"""
|
||||
Function fitting and peak search with mathutils facade
|
||||
"""
|
||||
from mathutils import fit_polynomial,fit_gaussian, fit_harmonic, calculate_peaks
|
||||
from mathutils import PolynomialFunction, Gaussian, HarmonicOscillator
|
||||
import math
|
||||
|
||||
|
||||
start = 0
|
||||
end = 10
|
||||
step_size = 0.1
|
||||
|
||||
result= lscan(sout,sinp,start,end,[step_size,],0.01)
|
||||
|
||||
readable = result.getReadable(0)
|
||||
positions = result.getPositions(0)
|
||||
|
||||
def get_function_data(function, start, end, resolution):
|
||||
ret = []
|
||||
for x in frange(start, end, resolution, True):
|
||||
fit_polinomial.append(function.value(x))
|
||||
|
||||
|
||||
pars_polynomial = (a0, a1, a2, a3, a4, a5, a6) = fit_polynomial(readable, positions, 6)
|
||||
fitted_polynomial_function = PolynomialFunction(pars_polynomial)
|
||||
print pars_polynomial
|
||||
|
||||
from mathutils import fit_gaussian, Gaussian
|
||||
from plotutils import plot_function, plot_data
|
||||
import math
|
||||
|
||||
|
||||
ydata = [0, 1,2,3,4,5,6,7,8,9,8,7,6,5,4,4,3,3,2,2,1,0]
|
||||
xdata = range(len(ydata))
|
||||
|
||||
|
||||
|
||||
(normalization, mean, sigma) = fit_gaussian(readable, positions)
|
||||
fitted_gaussian_function = Gaussian(normalization, mean, sigma)
|
||||
print (normalization, mean, sigma)
|
||||
(amplitude, angular_frequency, phase) = fit_harmonic(readable, positions)
|
||||
fitted_harmonic_function = HarmonicOscillator(amplitude, angular_frequency, phase)
|
||||
print (amplitude, angular_frequency, phase)
|
||||
|
||||
|
||||
resolution = step_size/100
|
||||
fit_polinomial = []
|
||||
fit_gaussian = []
|
||||
fit_harmonic = []
|
||||
for x in frange(start,end,resolution, True):
|
||||
fit_polinomial.append(fitted_polynomial_function.value(x))
|
||||
fit_gaussian.append(fitted_gaussian_function.value(x))
|
||||
fit_harmonic.append(fitted_harmonic_function.value(x))
|
||||
x = frange(start, end+resolution, resolution)
|
||||
|
||||
|
||||
|
||||
fit = []
|
||||
resolution = float(xdata[0] - xdata[1])/100
|
||||
xfit = frange(start,end,resolution, True)
|
||||
for x in xfit:
|
||||
fit.append(fitted_gaussian_function.value(x))
|
||||
|
||||
|
||||
plots = plot([readable, fit_polinomial, fit_gaussian, fit_harmonic] ,
|
||||
["data", "polinomial", "gaussian", "harmonic"], xdata = [positions,x,x,x], title="Data")
|
||||
|
||||
for p in peaks:
|
||||
print "Max: " + str(p)
|
||||
plots[0].addMarker(p, None, "Max=" + str(round(p,2)), None)
|
||||
import java.awt.Color
|
||||
plots[0].addMarker(mean, None, "Mean=" + str(round(mean,2)), java.awt.Color.LIGHT_GRAY)
|
||||
peaks = calculate_peaks(fitted_polynomial_function, start, end)
|
||||
|
||||
#plots = plot([ydata, fit],["data", "gaussian"], xdata = [xdata,xfit], title="Fit")
|
||||
#plots[0].addMarker(mean, None, "Mean=" + str(round(mean,2)), java.awt.Color.LIGHT_GRAY)
|
||||
|
||||
p = plot(None, title="Fit")[0]
|
||||
Reference in New Issue
Block a user