how to design LQR controller with time-variable parameters ?

6 views (last 30 days)
hi, i am trying to design LQR controller for a system but one variable for matrix A is changing with time (it is a vector of 10001x1)so the error in matlab is matrix dimension and i heard that interpreted matlab function could be useful but still i have doubts. can anyone help me with this problem?thanks
  1 Comment
Michael Hubatka
Michael Hubatka on 10 Feb 2016
Please state your question more precisely.
  • Are you looking for a single controller that stabilizes all your plants?
  • Are you familiar with lqr from the control systems toolbox?
  • Are you trying to solve an optimal control problem?

Sign in to comment.

Accepted Answer

Sebastian Castro
Sebastian Castro on 11 Feb 2016
Yes, a MATLAB Function block would indeed do the trick. Suppose you make a function:
function output = myLQR(error,param)
Where param is the the value of that one element of A (let's say, A(5,5)) passed in as a time-varying signal to the MATLAB function. So, in the function, you can say something like:
A(5,5) = param;
Then, the command to design an LQR contoller given A and B matrices, and Q/R/N noise covariance matrices, is as follows (or look at the lqr documentation for other ways to call it).
K = lqr(A,B,Q,R,N)
Finally, you want to multiply the resulting K matrix with your error signal, and that's your control law!
output = K*error;
- Sebastian
  1 Comment
Thinh Do
Thinh Do on 4 Jun 2020
No it does not, when I use the block, it appears that the function lqr() is not supported in the MATLAB Function block.

Sign in to comment.

More Answers (0)

Products

Community Treasure Hunt

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

Start Hunting!