Массив моделей с одним изменяющимся параметром
В этом примере показано, как создать одномерный массив передаточных функций. Один параметр передаточной функции варьируется от модели к модели в массиве. Вы можете использовать такой массив для изучения влияния изменения параметров на вашу модель, например, для анализа чувствительности.
import Pkg
Pkg.add("ControlSystems")
using ControlSystems
s = tf('s');
Создайте массив передаточных функций, представляющих следующий фильтр нижних частот при трёх значениях частоты среза .
Создайте модели передаточных функций, представляющие фильтр с частотой среза = 3, 5 и 7.
a = [3, 5, 7]
F_array = [ tf([a[i]],[1,a[i]]) for i=1:length(a) ]
Способ включения позволяет нам создать вектор передаточных функций с изменяющимся параметром.
Построим диаграмму Боде для F_array
.
bodeplot(F_array)
Когда вы используете команды анализа, такие как bodeplot
для массива моделей, на полученном графике отображается отклик каждой модели в массиве. Таким образом, вы можете увидеть диапазон откликов, возникающих в результате изменения параметров.
Модели из вектора можно объединить и получить MIMO систему.
Преобразование массива систем в многомерную систему
Создать диагональную многомерную систему можно из вектора систем с помощью функции append
. В результате у нас получится система с тремя входами и тремя выходами.
P1 = append(F_array[1], F_array[2], F_array[3])
Другая функция array2mimo
позволяет создать систему с одним входом и тремя выходами.
P2 = array2mimo(F_array)
Чтобы обратно вернуться к массиву систем или получить вектор из MIMO системы, можно применить функцию getindex
.
sys_array = getindex.(Ref(P2), 1:P2.ny, (1:P2.nu)')
Вывод
Мы рассмотрели, как создать массив моделей с изменяющимся параметром.Также узнали, какие функции позволяют перейти от массива к MIMO системе и обратно.