RLC = [0.1, 0.5, 10, 5, 10, 1];
PhaseTimes = [0, 500, 1000, 2000, 3000, 4000, 5000];
[Kf_LMax] = Kf_Cal(Kf_Max, RLC, TauKf_ON, TauKf_OFF, PhaseTimes, t);
plot(t, Kf_LMax, '.--', 'LineWidth', 1.5); ylim([0 110])
title('Kf_LMax over Time');
function [Kf_LMax] = Kf_Cal(Kf_Max, RLC, TauKf_ON, TauKf_OFF, PhaseTimes, t)
Kf_LMax = zeros(size(t));
Kf_LMax(i) = calculate_kf(t(i), PhaseTimes, Kf_Max, RLC, TauKf_ON, TauKf_OFF);
function Kf_L = calculate_kf(t_current, PhaseTimes, Kf_Max, RLC, TauKf_ON, TauKf_OFF)
Kf_LMax_values = Kf_Max * (RLC ./ (1 + RLC));
Kf_L = Kf_LMax_values(1);
T_end = PhaseTimes(j + 1);
if t_current >= T_start && t_current < T_end
Kf_L = Kf_LMax_values(j);
if RLC(j - 1) < RLC(j) && RLC(j) > RLC(j + 1)
Kf_endA = Kf_LMax_values(j) - (Kf_LMax_values(j) - Kf_LMax_values(j - 1))*exp(TauKf_ON * (t_current - T_start));
Kf_L = Kf_LMax_values(j) + (Kf_endA - Kf_LMax_values(j - 1))*exp(TauKf_OFF*(t_current - T_start));
elseif RLC(j - 1) < RLC(j) && RLC(j) < RLC(j + 1)
Kf_endB = Kf_LMax_values(j) - (Kf_LMax_values(j) - Kf_LMax_values(j - 1))*exp(TauKf_ON * (t_current - T_start));
Kf_L = Kf_LMax_values(j) + (Kf_endB - Kf_LMax_values(j - 1))*exp(TauKf_OFF*(t_current - T_start));
elseif RLC(j - 1) > RLC(j) && RLC(j) < RLC(j + 1)
Kf_endC = Kf_LMax_values(j) - (Kf_LMax_values(j) - Kf_LMax_values(j - 1))*exp(TauKf_ON * (t_current - T_start));
Kf_L = Kf_LMax_values(j) + (Kf_endC - Kf_LMax_values(j - 1))*exp(TauKf_OFF*(t_current - T_start ));
elseif RLC(j - 1) > RLC(j) && RLC(j) >= RLC(j + 1)
Kf_endD = Kf_LMax_values(j) - (Kf_LMax_values(j) - Kf_LMax_values(j - 1))*exp(TauKf_ON * (t_current - T_start));
Kf_L = Kf_LMax_values(j) + (Kf_endD - Kf_LMax_values(j - 1))*exp(TauKf_OFF*(t_current - T_start ));
Kf_end1 = Kf_LMax_values(j) - (Kf_LMax_values(j) - Kf_LMax_values(j - 1)) * exp(TauKf_ON * (t_current - T_start));
Kf_L = Kf_LMax_values(j) + (Kf_end1 - Kf_LMax_values(j - 1)) * exp(TauKf_OFF * (t_current - T_start));
elseif RLC(j - 1) > RLC(j)
Kf_end2 = Kf_LMax_values(j) - (Kf_LMax_values(j) - Kf_LMax_values(j - 1)) * exp(TauKf_ON * (t_current - T_start));
Kf_L = Kf_LMax_values(j) + (Kf_end2 - Kf_LMax_values(j - 1)) * exp(TauKf_OFF * (t_current - T_start));
Kf_L = min(Kf_L, Kf_Max);