How to specify constant vs unique parameters in System ID with multiple experiments?

7 vues (au cours des 30 derniers jours)
Brett
Brett le 7 Mar 2025
Commenté : Brett le 18 Déc 2025 à 16:46
For multiple experiments, I'd like to fit a simple process model where 2 poles (tp1, tp2) are the same for all experiments, but gain (Kp), zero (tz) and time delay (td) can be different for each experiment. Is there an elegant way to to this with the System Identification Toolbox? Each experiment comprises 2 time series: one forcing input & one response ouput.

Réponse acceptée

Jack
Jack le 8 Mar 2025
One common approach is to break the estimation into two steps. First, you can pool the data from all experiments to estimate the common dynamics (the two poles, tp1 and tp2). Then, with these poles fixed, you estimate the experiment‐specific parameters (gain Kp, zero tz, and delay td) individually for each experiment.
Alternatively, if you want to do it in one step you can build a custom grey‐box model (using idgrey or idnlgrey) where your parameter vector includes both the common parameters and the experiment‐specific ones. You then set up linear equality constraints (via the model’s ParameterConstraints property) so that the values for tp1 and tp2 are identical across experiments. Unfortunately, the System Identification Toolbox does not offer a direct “elegant” switch for shared versus unique parameters, so you must implement these constraints manually.
For example, you might organize your combined parameter vector as
% For N experiments, define a parameter vector:
% p = [tp1, tp2, Kp1, tz1, td1, Kp2, tz2, td2, ..., KpN, tzN, tdN]
% Then, in your custom model function, enforce that the first two parameters
% (tp1 and tp2) are used for every experiment.
This approach lets you use the multi‐experiment estimation capabilities of the toolbox while ensuring that the poles remain common and the remaining parameters vary per experiment.
Follow me so you can message me anytime with future MATLAB questions. If this helps, please accept the answer as well.
  2 commentaires
Brett
Brett le 10 Mar 2025
Thanks Jack. I had a feeling that this was the case but hoped there was an 'experiment specific' / 'always constant' switch for identified parameters buried somewhere in the sysID toolbox. I like your suggestion about using a parametrized grey-box model and will give that a try.
Brett
Brett le 18 Déc 2025 à 16:46
Follow up: Grey-box worked great!
Compared to the process model, there are more paremeters in the statespace model, so it was easiest initially to understand the problem with procest(). Based on great fits from procest(), I derived a statespace model and knew some parameters but not others, so greyest() turned out to be exactly what was needed and eventually enabled working directly in statespace.

Connectez-vous pour commenter.

Plus de réponses (0)

Produits


Version

R2024b

Community Treasure Hunt

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

Start Hunting!

Translated by