필터 지우기
필터 지우기

lsqcurvefit help and curve fitting

조회 수: 2 (최근 30일)
Daniel Alejandro Diaz
Daniel Alejandro Diaz 2023년 4월 10일
댓글: Torsten 2023년 4월 11일
Dear Community,
I am trying to fit my mathematical model to the data I was able to retrieve. Currently my graph is showing this:
And followed by this prompt:
Do you know why the system isnt matching the data completely? I applied this to another case and it was able to work but my Dab was 2 orders of magnitude lower
Any help would be greatly appreciated!
-Daniel
  댓글 수: 3
Daniel Alejandro Diaz
Daniel Alejandro Diaz 2023년 4월 11일
편집: Torsten 2023년 4월 11일
Hi Torsten,
You are completely right. Sorry about that. Here is the attached data with my code. If there is anything else I could do to help with this please let me know and I will attend to it ASAP! Thank you!
%% Fitting experimental data to mathematical model %%
% Dab is found to be around 8.124E-8 cm^2/s (Source: Preparation & characterization
% of chitosan membrane for the permeation of 5FU - Jen Ming Yang)
clear all
%Calling data from excel
filename = 'Data Sheet.xlsx'; % Call the file we are using
sheet = 'Run 1'; % Call the sheet we are using
xlRange = 'A2:A12'; % Call time values in seconds
x2Range = 'B2:B12'; % Call concentration in mg/mL
t = xlsread(filename, sheet, xlRange); % t = xlsread(filename, sheet, xlRange); % Reads x-axis specified with above variables
c = xlsread(filename,sheet, x2Range); % c = xlsread(filename, sheet, x2Range); % Reads y-axis specified with above variables
figure
plot(t,c,'-')
hold on
x0 = 0.00000000001;
optimoptions(@lsqnonlin,'StepTolerance',1e-12);
Dab = lsqcurvefit(@f, x0, t, c) % fitting Dab to function(@f) defined below
Local minimum possible. lsqcurvefit stopped because the size of the current step is less than the value of the step size tolerance.
Dab = 3.4381e-07
% to data t & c starting at 0 by using x0
% and will be in units (cm^2/s)
t = [t;(6000:1000:50000).'];
plot(t,f(Dab,t),'--')
hold off
grid
title('Release')
%legend('Experimental','Theoretical')
xlabel('Time (sec)')
ylabel('Concentration (mg/mL)')
function Cal = f(Dab,t)
n = 0:250; % Number of sumations
RE = 0.10; % Release Efficieny for Chitosan is 6% so report value might be overestimated
Co = 187.*(RE); % Initial concentration of drug inside patch (mg/cm^3) (11.5 matches data!!!!)
L = 0.11; % Distance from middle of patch to surface (cm)
Vp = 1*1*2*L; % Volume of patch (cm^3)
Vl = 40; % Volume of liquid reservoir (cm^3)
%Belows is the average concentration profile <Ca>
lambdan = (((2.*n+1).*pi)./(2.*L)) ;
sum_parts = (((-1).^n)./(lambdan.^2)) .* exp(-(lambdan.^2).*Dab.*t) .* sin(lambdan.*L) ; %Summation
Cal = ((Co.*Vp)./Vl).*(1-(2./(L.^2)).*sum(sum_parts,2)); %Final Function
end
Also, Here is the expression i am fitting to the data
Torsten
Torsten 2023년 4월 11일
Do you see the reason for your problem in the graphics above ? The end concentration you assume is much too high - it should be similar to the asymptotic value to which your measurement data converge (around 0.032).

댓글을 달려면 로그인하십시오.

답변 (0개)

카테고리

Help CenterFile Exchange에서 Interpolation에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by