fitting is not working

%% Luz-Meiboom fit of R2 vs pH
clear; clc; close all;
%% Data
pH = [1.88, 2.45, 3.39, 3.87, 4.53, 4.68, 5.12, 5.25, 5.55, 5.82, …
6.01, 6.27, 6.66, 6.98, 7.75, 8.25, 8.96, 9.23];
R2 = [0.01137, 0.00973, 0.00803, 0.01824, 0.0547, 0.0712, 0.10246, …
0.12065, 0.12992, 0.22537, 0.18405, 0.05077, 0.0203, 0.01554, …
0.02122, 0.0371, 0.03736, 0.00611];
pH = pH(:);
R2 = R2(:);
%% Luz-Meiboom model function
% params(1) = R2m
% params(2) = tau
luzMeiboomFun = @(params, x) params(1) + params(2).* …
(1 – (2.*params(2)./x).*tanh(x./(2.*params(2))));
%% Initial parameter guesses
R2m_guess = min(R2);
tau_guess = 0.963;
p0 = [R2m_guess, tau_guess];
%% Bounds (lower, upper)
lb = [0, 0, 1e-4];
ub = [1, 1000, 500];
%% Fit using lsqcurvefit (Optimization Toolbox)
opts = optimoptions(‘lsqcurvefit’, ‘Display’, ‘iter’);
[params_fit, resnorm, residual, exitflag] = lsqcurvefit(luzMeiboomFun, p0, pH, R2, lb, ub, opts);
R2m_fit = params_fit(1);
tau_fit = params_fit(2);
fprintf(‘n— Fit results —n’);
fprintf(‘R2m = %.5fn’, R2m_fit);
fprintf(‘tau = %.5fn’, tau_fit);
fprintf(‘Residual norm = %.5fn’, resnorm);
%% Generate smooth fitted curve for plotting
pH_fine = linspace(min(pH), max(pH), 300);
R2_fit_curve = luzMeiboomFun(params_fit, pH_fine);
%% Plot: pH vs R2
figure(‘Color’,’w’);
plot(pH, R2, ‘ko’, ‘MarkerFaceColor’,’r’, ‘MarkerSize’,7, ‘DisplayName’,’Data’);
hold on;
plot(pH_fine, R2_fit_curve, ‘b-‘, ‘LineWidth’, 1.8, ‘DisplayName’,’Luz-Meiboom fit’);
xlabel(‘pH’, ‘FontSize’, 12);
ylabel(‘R_2 (s^{-1})’, ‘FontSize’, 12);
title(‘R_2 vs pH — Luz-Meiboom Fit’, ‘FontSize’, 13);
legend(‘Location’,’best’);
grid on;
box on;
hold off;%% Luz-Meiboom fit of R2 vs pH
clear; clc; close all;
%% Data
pH = [1.88, 2.45, 3.39, 3.87, 4.53, 4.68, 5.12, 5.25, 5.55, 5.82, …
6.01, 6.27, 6.66, 6.98, 7.75, 8.25, 8.96, 9.23];
R2 = [0.01137, 0.00973, 0.00803, 0.01824, 0.0547, 0.0712, 0.10246, …
0.12065, 0.12992, 0.22537, 0.18405, 0.05077, 0.0203, 0.01554, …
0.02122, 0.0371, 0.03736, 0.00611];
pH = pH(:);
R2 = R2(:);
%% Luz-Meiboom model function
% params(1) = R2m
% params(2) = tau
luzMeiboomFun = @(params, x) params(1) + params(2).* …
(1 – (2.*params(2)./x).*tanh(x./(2.*params(2))));
%% Initial parameter guesses
R2m_guess = min(R2);
tau_guess = 0.963;
p0 = [R2m_guess, tau_guess];
%% Bounds (lower, upper)
lb = [0, 0, 1e-4];
ub = [1, 1000, 500];
%% Fit using lsqcurvefit (Optimization Toolbox)
opts = optimoptions(‘lsqcurvefit’, ‘Display’, ‘iter’);
[params_fit, resnorm, residual, exitflag] = lsqcurvefit(luzMeiboomFun, p0, pH, R2, lb, ub, opts);
R2m_fit = params_fit(1);
tau_fit = params_fit(2);
fprintf(‘n— Fit results —n’);
fprintf(‘R2m = %.5fn’, R2m_fit);
fprintf(‘tau = %.5fn’, tau_fit);
fprintf(‘Residual norm = %.5fn’, resnorm);
%% Generate smooth fitted curve for plotting
pH_fine = linspace(min(pH), max(pH), 300);
R2_fit_curve = luzMeiboomFun(params_fit, pH_fine);
%% Plot: pH vs R2
figure(‘Color’,’w’);
plot(pH, R2, ‘ko’, ‘MarkerFaceColor’,’r’, ‘MarkerSize’,7, ‘DisplayName’,’Data’);
hold on;
plot(pH_fine, R2_fit_curve, ‘b-‘, ‘LineWidth’, 1.8, ‘DisplayName’,’Luz-Meiboom fit’);
xlabel(‘pH’, ‘FontSize’, 12);
ylabel(‘R_2 (s^{-1})’, ‘FontSize’, 12);
title(‘R_2 vs pH — Luz-Meiboom Fit’, ‘FontSize’, 13);
legend(‘Location’,’best’);
grid on;
box on;
hold off; %% Luz-Meiboom fit of R2 vs pH
clear; clc; close all;
%% Data
pH = [1.88, 2.45, 3.39, 3.87, 4.53, 4.68, 5.12, 5.25, 5.55, 5.82, …
6.01, 6.27, 6.66, 6.98, 7.75, 8.25, 8.96, 9.23];
R2 = [0.01137, 0.00973, 0.00803, 0.01824, 0.0547, 0.0712, 0.10246, …
0.12065, 0.12992, 0.22537, 0.18405, 0.05077, 0.0203, 0.01554, …
0.02122, 0.0371, 0.03736, 0.00611];
pH = pH(:);
R2 = R2(:);
%% Luz-Meiboom model function
% params(1) = R2m
% params(2) = tau
luzMeiboomFun = @(params, x) params(1) + params(2).* …
(1 – (2.*params(2)./x).*tanh(x./(2.*params(2))));
%% Initial parameter guesses
R2m_guess = min(R2);
tau_guess = 0.963;
p0 = [R2m_guess, tau_guess];
%% Bounds (lower, upper)
lb = [0, 0, 1e-4];
ub = [1, 1000, 500];
%% Fit using lsqcurvefit (Optimization Toolbox)
opts = optimoptions(‘lsqcurvefit’, ‘Display’, ‘iter’);
[params_fit, resnorm, residual, exitflag] = lsqcurvefit(luzMeiboomFun, p0, pH, R2, lb, ub, opts);
R2m_fit = params_fit(1);
tau_fit = params_fit(2);
fprintf(‘n— Fit results —n’);
fprintf(‘R2m = %.5fn’, R2m_fit);
fprintf(‘tau = %.5fn’, tau_fit);
fprintf(‘Residual norm = %.5fn’, resnorm);
%% Generate smooth fitted curve for plotting
pH_fine = linspace(min(pH), max(pH), 300);
R2_fit_curve = luzMeiboomFun(params_fit, pH_fine);
%% Plot: pH vs R2
figure(‘Color’,’w’);
plot(pH, R2, ‘ko’, ‘MarkerFaceColor’,’r’, ‘MarkerSize’,7, ‘DisplayName’,’Data’);
hold on;
plot(pH_fine, R2_fit_curve, ‘b-‘, ‘LineWidth’, 1.8, ‘DisplayName’,’Luz-Meiboom fit’);
xlabel(‘pH’, ‘FontSize’, 12);
ylabel(‘R_2 (s^{-1})’, ‘FontSize’, 12);
title(‘R_2 vs pH — Luz-Meiboom Fit’, ‘FontSize’, 13);
legend(‘Location’,’best’);
grid on;
box on;
hold off; curve fitting MATLAB Answers — New Questions

​

Leave a Reply

Your email address will not be published. Required fields are marked *