The MATLAB LQR (Linear Quadratic Regulator) is a control strategy used to design a controller that optimally regulates a linear dynamic system by minimizing a cost function based on the system's state and control inputs.
Here’s a simple code snippet to demonstrate how to implement an LQR controller in MATLAB:
% Define system dynamics
A = [0 1; -2 -3];
B = [0; 1];
C = [1 0];
D = 0;
% Define state and control weight matrices
Q = [1 0; 0 1]; % State weighting
R = 1; % Control weighting
% Compute the LQR controller
K = lqr(A, B, Q, R);
% Display the gain matrix
disp('LQR Gain Matrix K:');
disp(K);
Understanding Linear Quadratic Regulator (LQR)
Definition of LQR
The Linear Quadratic Regulator (LQR) is a pivotal concept in control theory, efficiently designed to derive an optimal control policy for linear systems. LQR seeks to minimize a cost function, often representing trade-offs between control inputs and state errors. The main advantage of using LQR lies in its ability to provide stability guarantees while optimizing performance metrics in real-time applications.
LQR Basics
State-Space Representation
LQR operates in the realm of state-space representation, which conceives a linear system denoted by matrices A, B, C, and D. Here, the state vector describes the system's internal state, the input vector accounts for external controls, and the output vector corresponds to the measured output. This representation is crucial because it allows LQR to formalize the relationships between the system's inputs and outputs effectively, providing a solid foundation for subsequent control design.
Cost Function
At the heart of LQR is the cost function, defined mathematically as:
\[ J(u) = \int_0^{\infty} (x^T Q x + u^T R u) \, dt \]
- x represents the state vector,
- u signifies the control input,
- Q is a positive semi-definite matrix weighting the state errors,
- R is a positive definite matrix weighting the control effort.
This formulation emphasizes how LQR balances performance (minimizing state errors) with control usage (reducing control actions). To illustrate, consider a simple scenario:
- If you assign a higher weight to the state error by increasing values in Q, your controller will react more aggressively, aiming for accuracy over energy efficiency.

Setting Up LQR in MATLAB
Requirements
To get started with MATLAB LQR, ensure you have MATLAB installed along with the Control System Toolbox. Using an updated version of MATLAB enhances functionality and optimization capabilities, providing access to improved features and performance enhancements.
Basic Syntax and Commands
MATLAB provides an intuitive function for LQR design, namely the `lqr` function. The basic syntax for the LQR command is:
K = lqr(A, B, Q, R)
- A: System dynamics matrix that defines how the state evolves over time.
- B: Input matrix that maps control inputs into the system.
- Q: State error weight matrix that can be tuned based on application specifics.
- R: Control effort weight matrix that influences how much control action is deemed acceptable.
Example Setup
Step 1: Define the State Space
To proceed with an LQR design, start by defining the system's state-space representation. Here's an example of how to define matrices A and B in MATLAB:
A = [0 1; -2 -3];
B = [0; 1];
Step 2: Set the Cost Matrices
Next, you’ll set the cost matrices Q and R. Choosing appropriate values is vital because it directly affects controller performance. Here’s an example:
Q = [1 0; 0 1];
R = 1;
Step 3: Apply the LQR Function
Now, apply the LQR function to compute the optimal feedback gain matrix K:
K = lqr(A, B, Q, R);
The output matrix K contains the gain values that dictate how the control input will respond to the current state.

Analyzing the Results
Closed-Loop System Dynamics
Once you have obtained the matrix K, you can compute the closed-loop system dynamics. The closed-loop matrix Ac describes how your system behaves with feedback control applied:
Ac = A - B*K;
This matrix is crucial because it indicates the stability of the controlled system. For a system to remain stable, all eigenvalues of Ac must have negative real parts.
Simulation of the System
In MATLAB, you can directly simulate the closed-loop response using built-in functions. Here’s how to visualize the step response of the controlled system:
sys_cl = ss(Ac, B, eye(2), 0);
step(sys_cl);
This command generates a step response plot, providing insight into how the system reacts when subjected to a step input. Key performance indicators, such as overshoot, settling time, and steady-state error, can be observed here.
Analyzing the Response
Interpreting simulation results is critical for design validation. Focus on characteristics like response time and overshoot, which are integral to applications involving control systems, such as robotics and automotive engineering. Fine-tuning these responses ensures your design meets desired specifications.

Tuning LQR Parameters
Modifying Q and R
Adjusting matrices Q and R can dramatically influence your system's behavior. For instance, increasing values in Q can lead to a quicker response, but may provoke overshoot:
Q = [10 0; 0 10]; % Higher weight on state error
R = 0.1; % Less control effort
Conversely, increasing R prompts the controller to minimize input energy. Understanding how these matrices interact allows you to find the right balance for your application's needs.
Practical Tips for Tuning
Consider utilizing trial-and-error methods for tuning in practical scenarios. Begin with initial values for Q and R and observe system performance. Then iteratively make adjustments. Alternatively, analytical tuning, where equations are set based on design specifications, provides a systematic approach to ensure a thorough examination of system behavior.

Advanced LQR Applications
State Observer
In systems with unmeasured states, employing a state observer in tandem with LQR can be beneficial. This observer estimates the state based on available outputs and is particularly useful in scenarios such as monitoring a vehicle's dynamics without direct state feedback.
LQR with Saturation
Actuator saturation—where the control action exceeds physical limits—can impede performance. Implementing saturation constraints preemptively avoids control signal overshooting. A practical implementation could involve constraining the control input within specified limits, ensuring that your system behaves predictively even under extreme conditions.

Conclusion
The MATLAB LQR serves as a powerful tool for engineers and researchers looking to develop effective control systems. By understanding its foundations and applying the techniques discussed in this guide, users can optimize their system responses and tackle complex control challenges. As you dive deeper into MATLAB, continuous experimentation and tuning will enhance your skills and broaden your expertise.

Additional Resources
Recommended MATLAB Documentation
For more detailed information about the `lqr` function and its parameters, refer to the official MATLAB documentation.
Online Forums & Communities
Engage with communities such as Stack Overflow and MATLAB Central, where enthusiasts and experts discuss their experiences, challenges, and solutions regarding LQR and related topics.
Further Reading
To further enhance your knowledge of LQR and control systems, consider books focused on control system design, as well as academic papers exploring recent advancements in optimal control strategies.

FAQs
What is the primary advantage of using LQR?
The primary advantage of using LQR is its ability to balance between state performance and control effort, guaranteeing stability in dynamic systems while optimizing the overall system's responsiveness.
Can LQR be used for nonlinear systems?
While LQR is fundamentally designed for linear systems, its principles can be extended to nonlinear systems through methods such as linearization around operating points or using related techniques like nonlinear control approaches.