tripti asked . 2020-12-16

Rearrange state space system

I've modelled a system in simulink and used operspec and linearise to extract a state space system. While the activity has worked well, I have a downstream process which requires the state space to be expressed in a different form.
Without modifying the simulink model, is there a matlab command or series of commands that is capable of rearranging a state space system such that some parameters which where previously ouputs become states. For context, my downstream process will also be dropping a number of states.
I've been using simulink, simulink control, system identification and the control system toolbox.

matlab , ,matlab coder , control system

Expert Answer

Kshitij Singh answered . 2024-05-18 12:20:49

Let's assume that the state space model from Simulink is defined as:
xdot = A*x + B*u
[y1;y2] = [C1; C2] * x + [0;D2] u
where y1 are the outputs that you want to be state variables (you can always order the ouputs this way) and all matrices are of compatible dimensions. Note that D1 == 0.
Now we have at least two options.
The first option is to add additional states (w) with derivatives equal to the derivatives of the outputs
w = y1
wdot = y1dot = C1*xdot = C1*A*x + C1*B*u.
Now we can augment the state vector x witht the new states w. By definition, the new outputs that replace y1 are just w. Hence the new state space model is:
[xdot;wdot] = [A 0;C1*A 0] * [x;w] + [B;C1*B] * u
[ynew;y2] = [0 I;C2 0] * [x;w] + [0;D] * u
where the zero and identity matrices are of approropriate dimension. The result will be a non--minimal state space realization that preseves the original states, retains the input/output transfer function from u to y, and has outputs ynew that are state variables.
Here's an example.
First, define some state space model
 
>> sys1 = minreal(ss(zpk([tf(1,[1 1]);tf(1,conv([1 1],[1 2]));tf(1,conv([1 1],[1 3]))])))

sys1 =
 
  A = 
            x1       x2       x3
   x1   -2.067  -0.2775  -0.1388
   x2   0.2401   -1.212    0.894
   x3  0.03861   0.5588   -2.721
 
  B = 
           u1
   x1  0.9679
   x2  0.6052
   x3   1.303
 
  C = 
            x1       x2       x3
   y1   0.1629   0.6703   0.3352
   y2  -0.6095   0.4695   0.2348
   y3  0.06517   0.4681  -0.2659
 
  D = 
       u1
   y1   0
   y2   0
   y3   0
 
Continuous-time state-space model.

Let's look at its transfer function matrix in zpk form (note the cancellations in the individual elements):

>> zpk(sys1)

ans =
 
  From input to output...
          (s+2) (s+3)
   1:  -----------------
       (s+2) (s+3) (s+1)
 
             (s+3)
   2:  -----------------
       (s+2) (s+3) (s+1)
 
             (s+2)
   3:  -----------------
       (s+2) (s+3) (s+1)
 
Continuous-time zero/pole/gain model.

Now defne a new state space realization using the augmented state vector and check its transfer function in zpk form:

 

>> sys2=ss([[sys1.a ; sys1.c(1:2,:)*sys1.a] zeros(5,2)],[sys1.b;sys1.c(1:2,:)*sys1.b],[zeros(2,3) eye(2);sys1.c(3,:) zeros(1,2)],[zeros(2,1);sys1.d(3,:)]);
>> zpk(sys2)

ans =
 
  From input to output...
          s (s+2) (s+3)
   1:  -------------------
       s (s+3) (s+2) (s+1)
 
             s (s+3)
   2:  -------------------
       s (s+3) (s+2) (s+1)
 
             (s+2)
   3:  -----------------
       (s+3) (s+2) (s+1)
 
Continuous-time zero/pole/gain model.

The transfer function matrices are the same (after cancellation), but additional poles at the origin show up because of the non-minimal realization. As must be the case, the first two outputs are state variables.

 

>> sys2.c

ans =

            0            0            0   1.0000e+00            0
            0            0            0            0   1.0000e+00
   6.5167e-02   4.6814e-01  -2.6593e-01            0            0
Another option is to define a new state vector (z) that is a linear combination of the original state vector (x) such that elements of z are the outputs that we want to be states. In other words
z = Tx = [C1; V] *x
where it is assumed that C1 has full row rank and that a matrix V can be found such that T is invertible. I'm pretty sure (not positive) that such a V can always be found. If we further assume that each row of C1 has a non-zero element in more than one column, then one option is to choose V such that each row of V is zero except in one column (different columns for each row). If this is assumption is not true, then it still should be easy to find a V.
 
Here we define T such that the first two states are the desired outputs and the third state is preserved.
 
>> T=[sys1.c(1:2,:);[0 0 1]]

T =

   1.6292e-01   6.7034e-01   3.3517e-01
  -6.0951e-01   4.6951e-01   2.3476e-01
            0            0   1.0000e+00
Verify that T is invertible.
 
 
            
>> rank(T)

ans =

     3

This tansformation T is called a similarity transformation and can used to define a new realization in terms of z (instead of x)

>> sys3=ss2ss(sys1,T)

sys3 =
 
  A = 
               x1          x2          x3
   x1          -1  -4.857e-17  -4.441e-16
   x2           1          -2  -4.441e-16
   x3      0.7396      0.1343          -3
 
  B = 
              u1
   x1          1
   x2  2.116e-16
   x3      1.303
 
  C = 
               x1          x2          x3
   y1           1           0  -5.551e-17
   y2           0           1           0
   y3      0.6513     0.06717        -0.5
 
  D = 
       u1
   y1   0
   y2   0
   y3   0
 
Continuous-time state-space model.

>> zpk(sys3)

ans =
 
  From input to output...
          (s+2) (s+3)
   1:  -----------------
       (s+1) (s+2) (s+3)
 
             (s+3)
   2:  -----------------
       (s+1) (s+2) (s+3)
 
             (s+2)
   3:  -----------------
       (s+1) (s+2) (s+3)
 
Continuous-time zero/pole/gain model.

As expected, the first two outputs of sys3 are now state variables and the transfer function matrix of sys3 is the same as that of sys1.


Not satisfied with the answer ?? ASK NOW

Frequently Asked Questions

MATLAB offers tools for real-time AI applications, including Simulink for modeling and simulation. It can be used for developing algorithms and control systems for autonomous vehicles, robots, and other real-time AI systems.

MATLAB Online™ provides access to MATLAB® from your web browser. With MATLAB Online, your files are stored on MATLAB Drive™ and are available wherever you go. MATLAB Drive Connector synchronizes your files between your computers and MATLAB Online, providing offline access and eliminating the need to manually upload or download files. You can also run your files from the convenience of your smartphone or tablet by connecting to MathWorks® Cloud through the MATLAB Mobile™ app.

Yes, MATLAB provides tools and frameworks for deep learning, including the Deep Learning Toolbox. You can use MATLAB for tasks like building and training neural networks, image classification, and natural language processing.

MATLAB and Python are both popular choices for AI development. MATLAB is known for its ease of use in mathematical computations and its extensive toolbox for AI and machine learning. Python, on the other hand, has a vast ecosystem of libraries like TensorFlow and PyTorch. The choice depends on your preferences and project requirements.

You can find support, discussion forums, and a community of MATLAB users on the MATLAB website, Matlansolutions forums, and other AI-related online communities. Remember that MATLAB's capabilities in AI and machine learning continue to evolve, so staying updated with the latest features and resources is essential for effective AI development using MATLAB.

Without any hesitation the answer to this question is NO. The service we offer is 100% legal, legitimate and won't make you a cheater. Read and discover exactly what an essay writing service is and how when used correctly, is a valuable teaching aid and no more akin to cheating than a tutor's 'model essay' or the many published essay guides available from your local book shop. You should use the work as a reference and should not hand over the exact copy of it.

Matlabsolutions.com provides guaranteed satisfaction with a commitment to complete the work within time. Combined with our meticulous work ethics and extensive domain experience, We are the ideal partner for all your homework/assignment needs. We pledge to provide 24*7 support to dissolve all your academic doubts. We are composed of 300+ esteemed Matlab and other experts who have been empanelled after extensive research and quality check.

Matlabsolutions.com provides undivided attention to each Matlab assignment order with a methodical approach to solution. Our network span is not restricted to US, UK and Australia rather extends to countries like Singapore, Canada and UAE. Our Matlab assignment help services include Image Processing Assignments, Electrical Engineering Assignments, Matlab homework help, Matlab Research Paper help, Matlab Simulink help. Get your work done at the best price in industry.