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

  • Thread starter Thread starter ayham87
  • Start date Start date
AI Thread Summary
The discussion revolves around analyzing the controllability of a linear time-invariant (LTI) system defined by the equations X = Ax + Bu, with specific nonzero parameters. The user initially attempted to use MATLAB's symbolic toolbox to determine the controllable subspace but encountered errors related to data type conversion. Another participant suggested that the user should declare matrices A and B as double floats instead of symbolic variables to avoid these issues. They also recommended performing the controllability analysis manually in MATLAB, as it is a straightforward process that does not require symbolic computation. The conversation emphasizes the importance of correctly defining variable types in MATLAB for successful execution of control system analysis.
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.
 
Thread 'Have I solved this structural engineering equation correctly?'
Hi all, I have a structural engineering book from 1979. I am trying to follow it as best as I can. I have come to a formula that calculates the rotations in radians at the rigid joint that requires an iterative procedure. This equation comes in the form of: $$ x_i = \frac {Q_ih_i + Q_{i+1}h_{i+1}}{4K} + \frac {C}{K}x_{i-1} + \frac {C}{K}x_{i+1} $$ Where: ## Q ## is the horizontal storey shear ## h ## is the storey height ## K = (6G_i + C_i + C_{i+1}) ## ## G = \frac {I_g}{h} ## ## C...
Back
Top