Engee 文档
Notebook

多输入多输出系统的频率响应

本例展示了如何通过两种方法研究多输入多输出 (MIMO) 系统的频率响应:计算频率响应和计算奇异值。

开始之前,请连接软件包ControlSystems.jl

In [ ]:
import Pkg
Pkg.add("ControlSystems")
In [ ]:
using ControlSystems
s = tf('s');

计算 MIMO 模型的频率响应并分析输出信号的大小。

In [ ]:
H = ssrand(2,2,3)
mag, phase, w = bode(H)
Out[0]:
([64.35193014748488 110.66105266914876; 4.517702482503937 8.1126829075723;;; 64.35173123989897 110.66071091235746; 4.517688677427745 8.112658012169764;;; 64.35151642715427 110.66034182782086; 4.5176737684629416 8.112631126067845;;; … ;;; 1.3743210863836728 0.48978319836300016; 0.11048789451967378 0.03695369884433167;;; 1.3743208282278998 0.48978365958105596; 0.11048738601888716 0.03694903132103605;;; 1.3743205891888663 0.48978408664557166; 0.11048691517136995 0.03694470890983952], [179.49447401920028 179.48084163877962; 179.43620199457524 179.44556259487726;;; 179.4746496420569 179.4604826340331; 179.41409233664749 179.42382003546894;;; 179.45404793472662 179.43932533235494; 179.39111572573253 179.401224919673;;; … ;;; -179.96421069383405 -0.06983037265621919; -180.50685638303776 -183.24164437539673;;; -179.9655613080031 -0.06719499468835029; -180.48773063550016 -183.11958354405905;;; -179.96686095174016 -0.06465908605398658; -180.4693264552339 -183.00209954377647], [0.0001, 0.00010392174819219933, 0.00010799729747322885, 0.00011223267953450933, 0.00011663416261521083, 0.00012120826077905968, 0.00012596174355495872, 0.00013090164595568805, 0.0001360352788895144, 0.00014137023998011728  …  707.3624548848775, 735.1034291716219, 763.9323346159553, 793.8918371383827, 825.0262759093753, 857.3817289700206, 891.0060814261498, 925.949096316866, 962.2624882623586, 1000.0])
In [ ]:
size_mag = size(mag)
Out[0]:
(2, 2, 420)

数据集mag 的第一和第二维是输出和输入的数量$H$ 。第三个维度是频率矢量 w 中的点数(如果没有指定频率矢量,bode 命令会自动确定点数)。因此,mag(i,j,:) 是$H$ 的第 j 个输入到第 i 个输出的频率响应。相位数据阵列phase 的形状与mag 相同。

在$H$ 中构建每个输入/输出对的频率响应。

In [ ]:
bodeplot(H, title = ["Input 1" "Input 2" "" "" "" "" "" ""], leg = false)
Out[0]:

bodeplot 在 H 中绘制每个输入输出对的频率响应的振幅和相位(由于ssrand 生成的是随机状态空间模型,您可能会看到与图中所示不同的特性)。第一列绘制了从第一输入信号到第一和第二输出信号的电路频率响应。第二列与此类似,但是从第二个输入信号到系统的两个输出信号。

绘制$H$ 的奇异值与频率的函数关系图。

In [ ]:
sigmaplot(H)
Out[0]:

sigmaplot 显示了多输入多输出系统$H$ 的奇异值与频率的关系。特定频率下的最大奇异值是该频率下所有输入信号线性组合的系统最大增益。与逐个信道的 Bode 图相比,奇异值能更好地反映 MIMO 系统的整体响应、稳定性和调整情况。

计算$H$ 在 0.1 至 10 rad/s 范围内的奇异值。

In [ ]:
ω = collect(1:0.001:10);
sv,w = sigma(H,ω)

display([sv,w])
2-element Vector{Array{Float64}}:
 [5.457212482429304 5.461629817019327 … 1.4747258493327937 1.4747227858945642; 0.5374496365843938 0.5377831833004091 … 0.24287151511445718 0.24284864620972058]
 [1.0, 1.001, 1.002, 1.003, 1.004, 1.005, 1.006, 1.007, 1.008, 1.009  …  9.991, 9.992, 9.993, 9.994, 9.995, 9.996, 9.997, 9.998, 9.999, 10.0]

调用sigma 时,命令返回数据数组sv 中的奇异值。$\omega$ 数组中的输入数据会告诉sigma 计算 0.1 至 10 rad/s 频率范围内的奇异值。函数sigma 会以向量 w 的形式返回这些频率。每一行sv 都包含频率为 w 的奇异值$H$ 。

输出

通过所讨论的例子,我们学会了如何研究多输入多输出系统的频率响应。