From 99cc006e28914938b6e37c61e661e4a4be530ab9 Mon Sep 17 00:00:00 2001 From: Joakim <joakim.j.linja@jyu.fi> Date: Tue, 27 Feb 2024 13:30:24 +0200 Subject: [PATCH] Added normalization to FID --- fid.m | 1 + fid.py | 46 ++++++++++++++++++++++------------------------ 2 files changed, 23 insertions(+), 24 deletions(-) diff --git a/fid.m b/fid.m index cb4600d..572ebcc 100644 --- a/fid.m +++ b/fid.m @@ -36,6 +36,7 @@ function [rX, rY, f2] = fid(X, Y, cutoff, plotToggle) Y1(2:end) = (Y(2:end,1)-y1)./(X(2:end,1)-x1); Y1(1) = Y1(2); + Y1 = Y1/max(abs(Y1)); if plotT figure, plot(X,Y1,'LineWidth',2); diff --git a/fid.py b/fid.py index 03ca8ae..218440a 100644 --- a/fid.py +++ b/fid.py @@ -43,27 +43,25 @@ def fid(X,Y,cutoff = 0.01): Boolean indexing array, the feature selection result. """ - try: - def f(x,a,b,c,d): - return -a/(b*x+c)+d - - x0 = X[0]; y0 = Y[0] - Y1 = np.zeros(len(Y)) - for i in range(1,len(X)): - Y1[i] = (Y[i]-y0)/(X[i]-x0) - Y1[0] = Y1[1] - - - popt, pcov = sp.optimize.curve_fit(f,X,Y1,p0=[1,10,10,0], - bounds=([0,-np.inf,-np.inf,-np.inf],[np.inf,np.inf,np.inf,np.inf])) - Y2 = f(X,*popt) - - dY2 = Y2[-1]-Y2[0] - f2 = Y2 < Y2[-1] - dY2*cutoff - - rX = X[f2] - rY = Y[f2] - - return rX, rY, f2 - except RuntimeError as e: - raise e + def f(x,a,b,c,d): + return -a/(b*x+c)+d + + x0 = X[0]; y0 = Y[0] + Y1 = np.zeros(len(Y)) + for i in range(1,len(X)): + Y1[i] = (Y[i]-y0)/(X[i]-x0) + Y1[0] = Y1[1] + Y1 = Y1/np.max(np.abs(Y1)) + + + popt, pcov = sp.optimize.curve_fit(f,X,Y1,p0=[1,10,10,0], + bounds=([0,-np.inf,-np.inf,-np.inf],[np.inf,np.inf,np.inf,np.inf])) + Y2 = f(X,*popt) + + dY2 = Y2[-1]-Y2[0] + f2 = Y2 < Y2[-1] - dY2*cutoff + + rX = X[f2] + rY = Y[f2] + + return rX, rY, f2 -- GitLab