带有一个变量参数的模型阵列
本例演示了如何创建一维传递函数数组。在数组中,不同模型的传递函数参数各不相同。您可以使用这种数组来研究参数变化对模型的影响,例如进行敏感性分析。
In [ ]:
import Pkg
Pkg.add("ControlSystems")
In [ ]:
using ControlSystems
s = tf('s');
创建一个传递函数阵列,表示以下低通滤波器在三个截止频率值下的情况 。
创建表示截止频率为 = 3、5 和 7 的滤波器的传递函数模型。
In [ ]:
a = [3, 5, 7]
F_array = [ tf([a[i]],[1,a[i]]) for i=1:length(a) ]
Out[0]:
通过包含法,我们可以创建一个参数可变的传递函数向量。
让我们构建F_array
的博德图。
In [ ]:
bodeplot(F_array)
Out[0]:
当您对模型数组使用bodeplot
等分析命令时,所得到的图将显示数组中每个模型的响应。这样,您就可以看到参数变化导致的响应范围。
矢量中的模型可以组合成多输入多输出(MIMO)系统。
将系统阵列转换为多维系统
我们可以使用函数append
从系统向量创建一个对角多维系统。结果就是一个有三个输入和三个输出的系统。
In [ ]:
P1 = append(F_array[1], F_array[2], F_array[3])
Out[0]:
另一个函数array2mimo
可以创建一个有一个输入和三个输出的系统。
In [ ]:
P2 = array2mimo(F_array)
Out[0]:
要返回系统阵列或从多输入多输出系统中获取一个矢量,可以使用函数getindex
。
In [ ]:
sys_array = getindex.(Ref(P2), 1:P2.ny, (1:P2.nu)')
Out[0]:
输出
我们已经了解了如何创建一个参数不断变化的模型数组。我们还学习了哪些函数可以让您从数组转换到多输入多输出系统,然后再转换回来。