This MATLAB code extracts the resistance/inductance matrix of a system:
- Different operating points are provided (measured or simulated current excitations).
- The associated losses/energies are provided (measured or simulated values).
- The corresponding resistance/inductance matrix is extracted.
The following the quadratic form is linking the aforementionned variables:
U = 0.5*I_vec'*Q_mat*I_vec
I_vec
is the vector containing the applied currentsQ_mat
is the resistance/inductance matrixU
is the loss/energy value
This code is handling the following cases:
n_op
is the number of provided operating pointsn_var
is the number of independent coefficients for the resistance/inductance matrixn_op<n_var
: under-determined equation system => invalid problemn_op==n_var
: determined equation system => linear equation systemn_op>n_var
: over-determined equation system => least-square fit
The condition number of the equation system and the residuum are computed. This is required to ensure that the resistance/inductance matrix is numerically robust. Finally, the code checks that the extracted matrix is physical (symmetric and positive definite).
- Tested with MATLAB R2021a.
- No toolboxes are required.
- Compatibility with GNU Octave not tested but probably easy to achieve.
Thomas Guillod - GitHub Profile
This project is licensed under the BSD License, see LICENSE.md.