Определение частотной характеристики системы¶
В данном примере мы разберём применение спектрального анализа для определения частотной характеристики неизвестной дискретной системы.
Самый простой способ – это подать на вход сигнал с плоским спектром. Спектр выходного сигнала в таком случае и будет частотной характеристикой системы.
Есть два способа получить сигнал с плоским спектром: использовать белый шум либо импульсный сигнал.
В данном примере взят случайный источник для генерации белого шума. На рисунках ниже показана наша модель.
Верхний уровень модели.
Подсистема с неизвестными характеристиками.
Далее объявим вспомогательную функцию запуска модели.
# Подключение вспомогательной функции запуска модели.
function run_model( name_model)
Path = (@__DIR__) * "/" * name_model * ".engee"
if name_model in [m.name for m in engee.get_all_models()] # Проверка условия загрузки модели в ядро
model = engee.open( name_model ) # Открыть модель
model_output = engee.run( model, verbose=true ); # Запустить модель
else
model = engee.load( Path, force=true ) # Загрузить модель
model_output = engee.run( model, verbose=true ); # Запустить модель
engee.close( name_model, force=true ); # Закрыть модель
end
sleep(5)
return model_output
end
Запустим модель и проанализируем записанные данные.
run_model("freqrespLTI") # Запуск модели.
inp = collect(inp);
inp = inp.value;
out = collect(out);
out = out.value;
Построим спектр для входных и выходных значений.
using FFTW
fs = 100
gr()
plot(fftfreq(length(inp[1:2000]), fs), abs.(fft(inp[1:2000])./length(inp[1:2000])),
xguide="Frequency / Hz", yguide="Magnitude")
plot!(fftfreq(length(out[1:2000]), fs), abs.(fft(out[1:2000])./length(out[1:2000])),
xguide="Frequency / Hz", yguide="Magnitude")
Вывод¶
Мы убедились в том, что в выходном сигнале есть явные области частот, которые гасятся нашей системой. Опираясь на эти данные, мы можем детально определить частотную характеристику системы.