EcmParamEstimator
Estimate ECM parameters from pulse-test data and build lookup tables.
This class estimates Equivalent-Circuit Model (ECM) parameters using results from a PulseTestEmulator and organizes them into lookup tables across state of charge (SoC), ambient temperature, and C-rate for both charge and discharge conditions.
Syntax
obj = EcmParamEstimator(pulseEmulatorObj, thetaInit, thetaLB, thetaUB)
| Name |
Type |
Description |
pulseEmulatorObj |
PulseTestEmulator |
Source of pulse test inputs/results. |
thetaInit |
double |
Initial parameter vector with odd length ≥ 3 in the form [R0, Rp1,...,Rp_n, tau1,...,tau_n]. |
thetaLB |
double |
Lower bounds, same size as thetaInit (all ≥ 0). |
thetaUB |
double |
Upper bounds, same size as thetaInit (strictly greater than thetaLB). |
Methods
| Name |
Description |
Run_Parameterisation() |
Fits ECM parameters for all (SoC, Temp, C-rate) breakpoints and populates LUTs. |
Properties
| Name |
Type |
Description |
pulseEmulatorObj |
PulseTestEmulator |
Pulse-Based Model input object. |
modelOrder |
double |
ECM order n where n = (numel(thetaInit) - 1)/2. |
thetaInit |
double |
Initial parameter guess. |
thetaBounds |
struct |
Struct with fields .lb and .ub for parameter bounds. |
ecmOptParameters |
struct |
Fitted ECM parameter lookup tables for charge and discharge. |
paramNames |
string |
Names of parameters stored in the LUTs (R0, R1..Rn, tau1..taun). |
Fields of ecmOptParameters.(pulseType)
| Field |
Type |
Description |
dim1_socBPs |
double |
SoC breakpoints. |
dim2_tempBPs |
double |
Ambient temperature breakpoints (°C). |
dim3_crateBPs |
double |
C-rate breakpoints (positive for charge, negative for discharge). |
lookUpTables.R0 |
double array |
3D LUT for R0 over [soc, temp, crate]. |
lookUpTables.R1..Rn |
double array |
3D LUTs for Rp branches. |
lookUpTables.tau1..taun |
double array |
3D LUTs for time constants. |
lookUpTables.ecmModelVoltFits |
cell array |
Fit tables per grid point with columns time, voltageEcmFit, voltagePhyModel. |
Examples
Basic Usage
% First-order ECM example (theta = [R0, Rp1, tau1])
thetaInit = [0.01, 0.02, 100];
thetaLB = [0, 0, 1];
thetaUB = [0.1, 0.1, 1e4];
est = EcmParamEstimator(pulseEmulatorObj, thetaInit, thetaLB, thetaUB);
est = est.Run_Parameterisation();
R0_lut = est.ecmOptParameters.discharge.lookUpTables.R0;
See also