1
$\begingroup$

Finding the zeros for a state space model is easy. Just convert the SS to TF and then find the roots of numerators from the transfer function.

But it's can be done this way too:

$$C\operatorname{adj}(sI-A)B +D\det(sI-A) = 0$$

My question is if there is an algorithm to solve this in MATLAB? I Know that there is a MATLAB command named zero and tzero. But I don't want to use that.

$\endgroup$
6
  • 1
    $\begingroup$ Fort a MIMO system the right hand side of your equation should not have to be all zeros, but in general a zero can be defined as for which $s$ the expression of the left hand side loses rank. $\endgroup$ Sep 30 '17 at 17:10
  • $\begingroup$ What is the formula for that? $\endgroup$
    – MrYui
    Sep 30 '17 at 17:29
  • $\begingroup$ Formula for what? With my previous comment I tried to make you aware of the fact that the equation in your question might not be solvable in the MIMO case. $\endgroup$ Sep 30 '17 at 18:33
  • $\begingroup$ Yes I Know that. My formula is only for SISO case. You mean that if I have a matrix M = [(sI-A) B; C D] and then a do a for loop with large s as initial value and decreese s. Mean while the loop is running. I check the rank of matrix M. If I notice that the matrix M has step down one rank. I have found a zero. Right ? $\endgroup$
    – MrYui
    Sep 30 '17 at 18:39
  • $\begingroup$ You can use the formula in your question, but you would have to reformulate it slightly to also make it applicable in the MIMO case. Namely a zero can be defined as a value for $s$ such that the rank of the expression on the left hand side of your equation loses rank. $\endgroup$ Sep 30 '17 at 23:16
1
$\begingroup$

Here is the answer

Z = eig ([A B; C D] , [eye (size (A, 1)) B*0; C*0 D*0])
Z = Z(Z ~= 0 & isfinite(Z))% remove inf values 

Done.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.