Online parameter estimation for multiple output system

3 views (last 30 days)
Hi Everyone,
I have a model with 6 parameters and I want to estimate these parameters online using "Online Recursive Least Squares Estimation" block in Simulink. The problem is that this block is designed for single output models only.
My model is like this:
Y_3*1 = H_3*6 X theta_6*1
do you have any idea how I can use this block or any other block to estimate my parameters online and efficiently?
In other words, I have three equations which are dependent to six parameters.
Thanks a lot
  2 Comments
David Fink
David Fink on 5 Dec 2017
I'm not sure I understand the model.
If the coefficients for the 3 outputs are independent, using one of those blocks for each output with all 6 parameters would produce 6 coefficients for each output.
If this is not what you are looking for, please clarify the model description and your overall goal.
Mohammadreza Yavari
Mohammadreza Yavari on 5 Dec 2017
Edited: Mohammadreza Yavari on 6 Dec 2017
Thank you, David, for the answer.
Yes, I can use three different blocks, one for each equation but then I get three different answers. I want a single answer that satisfies the three equations at the maximum possibility. If you think of least squares formulation, I have
y1 = A1 * x
y2 = A2 * x
y3 = A3 * x
and I want to get the x that minimizes
|([y1_m,y2_m,y3_m] - [(A1 * x) , (A2 * x)), (A3 * x)])|^2
where yi_m is the ith measured output.
One option that comes to my mind is dimension reduction using eigenvalues. However, I don't know how to do that exactly.
Please let me know if you have any hints or suggestions.
Thanks,

Sign in to comment.

Answers (1)

Mohammadreza Yavari
Mohammadreza Yavari on 5 Dec 2017
Edited: Mohammadreza Yavari on 6 Dec 2017
Thank you, David Fink, for the answer.
Yes, I can use three different blocks, one for each equation but then I get three different answers. I want a single answer that satisfies the three equations at the maximum possibility. If you think of least squares formulation, I have
y1 = A1 * x
y2 = A2 * x
y3 = A3 * x
and I want to get the x that minimizes
|([y1_m,y2_m,y3_m] - [(A1 * x) , (A2 * x)), (A3 * x)])|^2
where yi_m is the ith measured output.
One option that comes to my mind is dimension reduction using eigenvalues. However, I don't know how to do that exactly.
Please let me know if you have any hints or suggestions.
Thanks,
  2 Comments
David Fink
David Fink on 7 Dec 2017
This doesn't solve the exact sum of squares problem, but it approximates it:
"Unbuffer" the data (vector of outputs and matrix of inputs) to handle one at a time, and pass these all through one Recursive Least Squares Estimator block. The Unbuffer Block is part of the DSP System Toolbox.
See the attached example (created in MATLAB R2017a). The inputs and outputs are constants:
[1 2] -> 1
[3 4] -> 2
[5 6] -> 3
The optimal output coefficients should be [0 0.5]. After 50 iterations (150 updates to parameters), we get an output of [2.8e-6 0.5].
Mohammadreza Yavari
Mohammadreza Yavari on 8 Dec 2017
Hi David
Thanks a bunch for this brilliant solution. I will give it a try and ask if I faced any further question.
I wanted to make it as accepted answer but it is a comment.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!