Частотная передаточная функция (FRD)
Частотная передаточная функция (частотный отклик) задается с помощью наборов частот и комплексных чисел, выражающих реакцию системы на этих частотах.
Это удобный способ хранить данные частотной характеристики системы для визуализации или использования в расчетах.
In [ ]:
neededLibs = [
"EngeeControlSystems", # Для использования функции frd
"ControlSystemsBase", # Для построения ЛАФЧХ
"CSV" # Для загрузки экспериментальных данных из таблицы
]
for lib in neededLibs
try
eval(Meta.parse("using $lib"))
catch ex
Pkg.add(lib)
eval(Meta.parse("using $lib"))
end
end
Загрузка данных из таблицы
In [ ]:
df = CSV.read("frd_data.csv", DataFrame)
freq = df.freq
resp = [parse(ComplexF64, r) for r in df.resp]; # Преобразование из String в ComplexF64
Создание Модели частотной характеристики
In [ ]:
sys = frd(resp, freq)
Out[0]:
Построение ЛАФЧХ
In [ ]:
magnitude, phase, _ = bode(sys, freq)
Out[0]:
In [ ]:
magnitude = reshape(magnitude, size(magnitude, 3),)
phase = reshape(phase, size(phase, 3),)
Out[0]:
In [ ]:
p1 = Plots.plot(freq, 20*log10.(magnitude), ylabel = "L, дБ", legend = :none)
p2 = Plots.plot(freq, phase, xlabel = "ω, рад/с", ylabel = "Ψ, град", legend = :none)
Plots.plot(p1, p2, layout = (2,1), grid = false, framestyle = :box, xscale=:log10, xlims = (0.1,100))
Out[0]:
