Документация Engee
Notebook

Частотная характеристика SISO систем

В этом примере показано, как построить график частотной характеристики и получить данные о частотной характеристике для модели динамической системы с одним входом и одним выходом (SISO).

Перед началом работы подключите пакет ControlSystems.jl.

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

Создайте модель передаточной функции и постройте график ее частотной характеристики.

In [ ]:
H = tf([10,21],[1,1,4,26]); 
bode(H)
Out[0]:
([0.8088233541914841;;; 0.8089046843736906;;; 0.8089918641454111;;; … ;;; 0.0011497047425680343;;; 0.0010725473088794312;;; 0.0010005709166500281], [1.8467719298508563;;; 1.9119942598198527;;; 1.9795194061467587;;; … ;;; 179.3230779917472;;; 179.3462604412354;;; 179.36864326745186], [0.1, 0.10353218432956621, 0.10718913192051278, 0.11097524964120718, 0.11489510001873092, 0.11895340673703195, 0.12315506032928256, 0.12750512407130132, 0.1320088400831418, 0.13667163564620066  …  73.16807143427197, 75.75250258771912, 78.42822061337682, 81.19844993184013, 84.06652885618325, 87.03591361485161, 90.11018251665018, 93.29304026284686, 96.58832241158703, 100.0])

Если вы не укажете диапазон частот для отображения, функция bode автоматически выберет диапазон частот, основанный на динамике системы.

Рассчитайте частотную характеристику в диапазоне от 1 до 13 рад/с.

In [ ]:
ω = collect(1:0.001:13);
mag, phase, w = bode(H, ω);

display([mag, phase])
2-element Vector{Array{Float64, 3}}:
 [0.9237490475443623;;; 0.9239884115824651;;; 0.924228047260294;;; … ;;; 0.06127526367424186;;; 0.06126550216321019;;; 0.061255743011682656]
 [18.620571649240677;;; 18.640012816814973;;; 18.65945837391501;;; … ;;; 174.636884266112;;; 174.63737792766062;;; 174.63787149391422]

Когда вы вызываете bode, команда возвращает векторы mag и phase, содержащие величину и фазу частотной характеристики. Входной сигнал массива $\omega$ указывает bode рассчитать отклик в диапазоне частот от 1 до 13 рад/с. bode возвращает частотные точки в векторе w.

Полученные данные можно отобразить на графике с помощью функции bodeplot.

In [ ]:
bodeplot(H, ω, label = "H(s)")
Out[0]:

Вывод

Таким образом, мы познакомились с тем, как строить частотные характеристики для SISO системы.