1

I intend to compute the determinant of a transfer matrix and then subject to a nyquist analysis by making the nyquist plot but the problem is that the determinant command doesn't recognizes the transfer matrix. The code is shown below

clc
clear all;
close all;

g11 = tf(12.8,[16.7 1],'InputDelay',1)
g12 = tf(-18.9,[21 1],'InputDelay',3)
g21 = tf(6.6,[10.9 1],'InputDelay',7)
g22 = tf(-19.4,[14.4 1],'InputDelay',3)

G=[g11 g12 ; g21 g22]

[re,im,w] = nyquist(G)

F=2.55;


s=tf('s');
%syms s;

ggc11 = g11*(0.96*(1+3.25*F*s)/(3.25*F^2*s))
ggc12 = g12*(0.534*(1+3.31*F*s)/(3.31*F^2*s))
ggc21 = g21*(0.96*(1+3.25*F*s)/(3.25*F^2*s))
ggc22 = g22*(0.534*(1+3.31*F*s)/(3.31*F^2*s))

GGc=[ggc11 ggc12 ; ggc21 ggc22];

L=eye(2)+ GGc;

W= -1 + det(L)

nyquist(W)

The error that appears is as follows

Undefined function 'det' for input arguments of type 'ss'.

Error in BLT_code (line 30) W= -1 + det(L)

I would like to avoid the 'syms' command as I would not be able to do the nyquist plot then. Is there any alternative way of computing the nyquist plot of the same ?

biswajit
  • 15
  • 7
  • Are you sure you want to calculate the determinant of a transfer function and use this to plot a nyquist diagram? – m7913d Apr 07 '17 at 16:57
  • Yeah, I am pretty sure about that. Right now I know a way of doing it and that is by partitioning L into sub-matrices and then doing it manually. I needed to know if there is any other alternative. – biswajit Apr 07 '17 at 17:07
  • The intention is to plot the closed loop log modulus of W and then determine the biggest log modulus from the plot. – biswajit Apr 07 '17 at 17:09

1 Answers1

0

I am stuck in the same boat, trying to calculate the determinant of transfer function matrices for the purpose of checking the MIMO Nyquist stability criteria, see MIMO Stability ETH Zurich Lecture slides (pg 10). Unfortunately there does not seem to be a simple MATLAB command for this. I figured it can be evaluated manually.

If you have a TF matrix G(s) of the following form:

G = [g_11 g_12; g_21 g_22];

you can obtain the determinant by evaluating it as per its original definition as

det_G = g_11*g_22 - g_12*g_21;

This will result in a 1x1 TF variable. Of course, this method gets much too complicated for anything above a 2x2 system.

Vehz
  • 1
  • 1