我打算计算传递矩阵的行列式,然后通过制作奈奎斯特图进行奈奎斯特分析,但问题是行列式命令不能识别传递矩阵。代码如下所示
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)
出现的错误如下
未定义函数'det'用于'ss'类型的输入参数。
BLT_code出错(第30行) W = -1 + det(L)
我想避免使用'syms'命令,因为我无法进行nyquist情节。有没有其他方法来计算相同的奈奎斯特图?
答案 0 :(得分:0)
我被困在同一条船上,试图计算传递函数矩阵的行列式,以检查MIMO Nyquist稳定性标准,请参见MIMO Stability ETH Zurich Lecture slides (pg 10)。不幸的是,似乎没有一个简单的MATLAB命令。我认为可以手动进行评估。
如果您的TF矩阵G具有以下形式:
G = [g_11 g_12; g_21 g_22];
您可以通过根据其原始定义对它进行评估来获取行列式
det_G = g_11*g_22 - g_12*g_21;
这将导致1x1 TF变量。当然,对于2x2以上的系统,这种方法太复杂了。