how to design LQR controller with time-variable parameters ?

shayan taherian · Mar 14, 2022 · 2K views
Question
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?
Expert Answer
Profile picture of Kshitij Singh
Kshitij Singh PhD Expert
Answered Aug 18, 2026

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;

 

Have a different question? Ask here

Get a Free Consultation or a Sample Assignment Review!