确定系统的频率响应¶
在本例中,我们将介绍如何应用频谱分析来确定未知离散系统的频率响应。
最简单的方法是 输入一个频谱平坦的信号。在这种情况下,输出信号的频谱就是系统的频率响应。 系统的频率响应。
获得具有平坦频谱的信号有两种方法:使用白噪声或脉冲信号。
在本例中,我们使用随机信号源产生白噪声。下图显示了我们的模型。
模型的顶层。
具有未知特征的子系统。
接下来,让我们声明一个运行模型的辅助函数。
In [ ]:
# Подключение вспомогательной функции запуска модели.
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
Out[0]:
让我们运行模型并分析记录的数据。
In [ ]:
run_model("freqrespLTI") # Запуск модели.
inp = collect(inp);
inp = inp.value;
out = collect(out);
out = out.value;
绘制输入和输出值的频谱图。
In [ ]:
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")
Out[0]:
输出¶
我们可以看到,输出信号中有明显的频率区域被我们的系统所抵消。根据这些数据,我们可以详细确定系统的频率响应。