Parameter Estimation of a model

2 visualizzazioni (ultimi 30 giorni)
Atharva Bhomle
Atharva Bhomle il 3 Lug 2023
Risposto: Star Strider il 3 Lug 2023
I have experimental data of application of current profile to a battery and have quantiies like time, current, voltage, temperature. From this data I calculate SoC based on Coloumb counting.
I have created a model that calculates terminal voltage but have some parameters i want to determine. Equation is in the picture attached.
Parameters are E0, r, k0, k1, k2, k3.
How can i estimate these parameters so that th voltage output of the equation matches with the expermiental data.

Risposta accettata

Star Strider
Star Strider il 3 Lug 2023
I would do something like this —
Data = [(0:10).' rand(11, 3)]; % Data = [Time Current Voltage Temperature
SOC = rand(11,1);
fcn = @(E0, r, k0, k1, k2, k3, Iin, Vm, SOC) E0 + Iin.*r - k0./SOC - k1.*SOC + k2.*log(SOC) + k3.*log(1-SOC) - Vm;
objfcn = @(b) norm(fcn(b(1),b(2),b(3),b(4),b(5),b(6),Data(:,2),Data(:,3),SOC));
B0 = rand(1,6);
Parms = fminunc(objfcn, B0)
Local minimum found. Optimization completed because the size of the gradient is less than the value of the optimality tolerance.
Parms = 1×6
-0.4379 -0.2098 0.2440 -1.0951 -1.3480 -0.0587
fprintf(1,'E0 = %6.3f\nr = %6.3f\nk0 = %6.3f\nk1 = %6.3f\nk2 = %6.3f\nk3 = %6.3f\n',Parms)
E0 = -0.438 r = -0.210 k0 = 0.244 k1 = -1.095 k2 = -1.348 k3 = -0.059
Make appropriate changes for your data.
.

Più risposte (0)

Categorie

Scopri di più su Propulsion and Power Systems in Help Center e File Exchange

Prodotti


Release

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by