Control Subspace of LTI System X = Ax + Bu: Nonzero Parameter Analysis

  • Thread starter Thread starter ayham87
  • Start date Start date
Click For Summary
SUMMARY

The discussion focuses on determining the controllability of a Linear Time-Invariant (LTI) system defined by the state-space representation X = Ax + Bu, where the matrices A and B contain nonzero parameters a1, a2, a3, a4, b1, and b2. The user initially attempted to use MATLAB's ctrb function with symbolic variables but encountered errors due to improper data types. The solution involves declaring A and B as double precision floats and using the ctrb function correctly to analyze the controllability of the system.

PREREQUISITES
  • Understanding of Linear Time-Invariant (LTI) systems
  • Familiarity with MATLAB programming and syntax
  • Knowledge of controllability concepts in control theory
  • Experience with matrix operations and representations
NEXT STEPS
  • Learn how to implement MATLAB's ctrb function with numeric matrices
  • Study the controllability matrix and its implications for system design
  • Explore symbolic computation in MATLAB for control systems
  • Investigate alternative methods for analyzing controllability by hand
USEFUL FOR

Control engineers, MATLAB users, and students studying control systems who need to analyze the controllability of LTI systems.

ayham87
Messages
3
Reaction score
0

Homework Statement



Given the LTI system X =Ax+Bu where

A =[ 0 1 0 0 0 0; a1 0 0 a2 0 0;0 0 0 1 0 0;0 a3 0 0 0 0; 0 0 0 0 0 1;0 0 0 0 a4 0];
B = [0 0 0 ;b1 0 0 ; 0 0 0 ;0 b2 0 ;0 0 0 ;0 0 b2];


and the parameters a1; a2; a3; a4; b1; b2 are all nonzero. Determine whether the system is completely controllable. If not, find the controllable subspace of the state space.






The Attempt at a Solution



I tried systematically but it seems to long so i try by MATLAB by the following code

syms a1 a2 a3 a4 b1 b2
A =[ 0 1 0 0 0 0; a1 0 0 a2 0 0;0 0 0 1 0 0;0 a3 0 0 0 0; 0 0 0 0 0 1;0 0 0 0 a4 0];
B = [0 0 0 ;b1 0 0 ; 0 0 0 ;0 b2 0 ;0 0 0 ;0 0 b2];

Co = ctrb(A,B)


Thanks in advanced
 
Physics news on Phys.org
The variables A and B need not be symbolic variables. Just declare A and B as double floats and use ctrb function. It worked for me.
 
Thanks for your response

actually "syms" not for A & B, its for the variables (a1 a2 b1 b2 a3 a4), I declare A & B as double float :

syms a1 b1 a2 a3 a4 b2
A =[ 0 1 0 0 0 0; a1 0 0 a2 0 0;0 0 0 1 0 0;0 a3 0 0 0 0; 0 0 0 0 0 1;0 0 0 0 a4 0];
B = [0 0 0 ;b1 0 0 ; 0 0 0 ;0 b2 0 ;0 0 0 ;0 0 b2];
A = float('double');
B = float('double');
Co = ctrb(A,B);


but i get the following error:

The following error occurred converting from struct to double:
Error using ==> double
Conversion to double from struct is not possible.

Error in ==> ctrb at 32
co(:,1:nu) = b;


can u help me again...thanks in advanced
 
the ctrb function doesn't handle symbolics. Just do the steps to find out controllability "by hand" via matlab. Its not that long, I've done it already, just create a few loops and such. I can provide the code I used to do it before I figured out MATLAB had the functionality, if you'd like.
 

Similar threads

  • · Replies 7 ·
Replies
7
Views
2K
  • · Replies 38 ·
2
Replies
38
Views
6K
  • · Replies 7 ·
Replies
7
Views
2K
  • · Replies 5 ·
Replies
5
Views
4K
Replies
3
Views
3K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 8 ·
Replies
8
Views
2K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 10 ·
Replies
10
Views
2K