Engee 文档
Notebook

具有一个可变参数的模型数组

此示例演示如何创建传递函数的一维数组。 传递函数的一个参数在阵列中因模型而异。 您可以使用这样的数组来研究参数变化对模型的影响,例如,分析灵敏度。

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]:
3-element Vector{TransferFunction{Continuous, ControlSystemsBase.SisoRational{Int64}}}:
 TransferFunction{Continuous, ControlSystemsBase.SisoRational{Int64}}
  3
-----
s + 3

Continuous-time transfer function model
 TransferFunction{Continuous, ControlSystemsBase.SisoRational{Int64}}
  5
-----
s + 5

Continuous-time transfer function model
 TransferFunction{Continuous, ControlSystemsBase.SisoRational{Int64}}
  7
-----
s + 7

Continuous-time transfer function model

包含方法允许我们创建一个具有可变参数的传递函数向量。

让我们构建一个波特图 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]:
TransferFunction{Continuous, ControlSystemsBase.SisoRational{Int64}}
Input 1 to output 1
  3
-----
s + 3

Input 1 to output 2
0
-
1

Input 1 to output 3
0
-
1

Input 2 to output 1
0
-
1

Input 2 to output 2
  5
-----
s + 5

Input 2 to output 3
0
-
1

Input 3 to output 1
0
-
1

Input 3 to output 2
0
-
1

Input 3 to output 3
  7
-----
s + 7

Continuous-time transfer function model

其他功能 array2mimo 允许您创建一个具有一个输入和三个输出的系统。

In [ ]:
P2 = array2mimo(F_array)
Out[0]:
TransferFunction{Continuous, ControlSystemsBase.SisoRational{Int64}}
Input 1 to output 1
  3
-----
s + 3

Input 1 to output 2
  5
-----
s + 5

Input 1 to output 3
  7
-----
s + 7

Continuous-time transfer function model

要返回到系统的阵列或从MIMO系统获得向量,可以应用函数 getindex.

In [ ]:
sys_array = getindex.(Ref(P2), 1:P2.ny, (1:P2.nu)')
Out[0]:
3×1 Matrix{TransferFunction{Continuous, ControlSystemsBase.SisoRational{Int64}}}:
 TransferFunction{Continuous, ControlSystemsBase.SisoRational{Int64}}
  3
-----
s + 3

Continuous-time transfer function model
 TransferFunction{Continuous, ControlSystemsBase.SisoRational{Int64}}
  5
-----
s + 5

Continuous-time transfer function model
 TransferFunction{Continuous, ControlSystemsBase.SisoRational{Int64}}
  7
-----
s + 7

Continuous-time transfer function model

结论

我们研究了如何使用可变参数创建模型数组。我们还了解了哪些功能允许您从阵列切换到MIMO系统并返回。