Main Content

estimateBatteryEISParameters

Estimate initial parameters for electrochemical-impedance-spectroscopy fractional-order model

Since R2025a

Description

The estimateBatteryEISParameters function estimates the initial parameters for a specific electrochemical-impedance-spectroscopy (EIS) fractional-order model.

The estimateBatteryEISParameters function calculates the parameters based on a-priori fit of several lithium-ion batteries and provides an approximation of the order of magnitude of the parameters only. The calculation of the parameter initial estimate depends on the battery capacity, temperature, and remaining capacity.

An EISModel object models the fractional-order model that this function uses to estimate the initial parameters. The CircuitTopology property of this EISModel object is equal to "R0+L1+(R1,CPE1)+(R2,CPE2)+CPE3". This value models an EISModel object with this 2-ZARC circuit topology:

These initial parameters estimates serve as an approximated initial guess for optimization-based fitting strategies of EIS parameters. The values that this function returns are only an approximation and they are not the final parameter values or representative of any system. As a result, expect great deviations between the simulated and the actual physical behavior of a battery system. To ensure the requisite accuracy, validate the simulated behavior against experimental data and refine the parameter values and models.

initialParameters = estimateBatteryEISParameters(Name=Value) estimates the initial parameters of an EIS fractional-order model with a "R0+L1+(R1,CPE1)+(R2,CPE2)+CPE3" circuit topology from the battery capacity, temperature, and remaining capacity.

example

Examples

collapse all

This example shows how to estimate the parameters of an EIS model based on an initial parameter recommendation.

Open the DownloadBatteryEISData example and load the required electrochemical impedance spectroscopy (EIS) data. This data has been generated from a battery with a nominal capacity of 30/1000 A*Hr at a temperature of 25 degree Celsius. This data consists of a 500-by-3 matrix of doubles. The columns of the matrix refer to the frequency, real impedance, and imaginary impedance values, respectively.

openExample("simscapebattery/DownloadBatteryEISDataExample")
load("generatedEISData.mat")

Fit the EIS data to a fractional-order equivalent circuit model. To fit the data and create an EISModel object, use the fitEISModel function.

eisfom = fitEISModel(eisData);

Analyze how the function performed the fit on the frequency model by using the plot function. This plot shows the simulated data against the measured data, where the X-axis represents the real part of the impedance and the Y-axis represents the imaginary part of the impedance.

plot(eisfom,Parent=figure,DisplayMode="Nyquist")

Plot of the simulated and measured impedance data with a Nyquist display for the fit without initial parameters.

Now get a recommendation of the initial parameters of the EIS model by using the estimateBatteryEISParameters function.

initParameters = estimateBatteryEISParameters("BatteryCapacity",simscape.Value(25/1000,"A*hr"));
initParameters =

    0.8262    0.0000    7.6919    0.6339    0.0410    1.1282    1.0000    0.0085    0.6877    6.4704

Create another EISModel object and assign it the initial parameters you estimated.

eisfom = eisModel(ParameterValues=initParameters)
eisfomtest = 

  EISModel with properties:

     CircuitTopology: "R0+L1+(R1,CPE1)+(R2,CPE2)+CPE3"
       NumParameters: 10
       ParameterList: ["R0"    "L1"    "R1"    "CPE1n"    "CPE1Q"    "R2"    "CPE2n"    "CPE2Q"    "CPE3n"    "CPE3Q"]
     ParameterValues: [0.8262 1.0000e-06 7.6919 0.6339 0.0410 1.1282 1 0.0085 0.6877 6.4704]
    CircuitImpedance: "((((R0 + (i*w*L1)) + ((R1 * (1/(((i*w)^CPE1n)*CPE1Q))) / (R1 + (1/(((i*w)^CPE1n)*CPE1Q))))) + ((R2 * (1/(((i*w)^CPE2n)*CPE2Q))) / (R2 + (1/(((i*w)^CPE2n)*CPE2Q))))) + (1/(((i*w)^CPE3n)*CPE3Q)))"
       ParameterList: ["R0"    "L1"    "R1"    "CPE1n"    "CPE1Q"    "R2"    "CPE2n"    "CPE2Q"    "CPE3n"    "CPE3Q"]

Show all properties

Fit the EIS model based on the initial parameters you estimated.

eisfom = fitEISModel(eisData,EISFOM=eisfom);

Analyze the accuracy of the fit. Notice how the fit is more accurate for the model with the estimated initial parameters.

plot(eisfom,Parent=figure,DisplayMode="Nyquist")

Plot of the simulated and measured impedance data with a Nyquist display for the fit with initial parameters.

Name-Value Arguments

collapse all

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Example: initialParameters = estimateBatteryEISParameters(BatteryCapacity=simscape.Value(10,"A*Hr"))

Nominal capacity of the battery, specified as a scalar or a simscape.Value object that represents a vector of nonnegative elements with a unit of ampere-hour.

If you set this property directly with a scalar value instead of using a simscape.Value object, the object converts the value to a simscape.Value object with ampere-hour as its physical unit.

Nominal temperature of the battery, specified as a scalar or a simscape.Value object that represents a vector of nonnegative elements with a unit of degree Celsius.

If you set this property directly with a scalar value instead of using a simscape.Value object, the object converts the value to a simscape.Value object with degree Celsius as its physical unit.

Remaining capacity of the battery, specified as a scalar or a simscape.Value object that represents scalar in the range [0,1].

If you set this property directly with a scalar value instead of using a simscape.Value object, the object converts the value to a simscape.Value object.

Output Arguments

collapse all

Estimates of the initial parameters of the EIS fractional-order model, returned as a vector of 10 elements. This table shows the relationship between each element of this vector and the circuit element of the fractional-order model:

Vector ElementCircuit ElementDescription
Element 1R0Initial estimate of R0 resistor element
Element 2L1Initial estimate of L1 inductor element
Element 3R1Initial estimate of R1 resistor element
Element 4CPE1nInitial estimate of the Laplacian exponent of the CPE1 constant phase element
Element 5CPE1QInitial estimate of the magnitude of the CPE1 constant phase element
Element 6R2Initial estimate of R2 resistor element
Element 7CPE2nInitial estimate of the Laplacian exponent of the CPE2 constant phase element
Element 8CPE2QInitial estimate of the magnitude of the CPE2 constant phase element
Element 9CPR3nInitial estimate of the Laplacian exponent of the CPE3 constant phase element
Element 10CPR3QInitial estimate of the magnitude of the CPE3 constant phase element

Version History

Introduced in R2025a