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

Логарифмическая амплитудно-фазовая частотная характеристика

Открыть пример в Engee

В данном примере для построения логарифмической амплитудно-фазовой частотной характеристики сделаны следующие шаги:

  1. Создана синусоида с заданной частотой.
  2. К сигналу применено быстрое преобразование Фурье (БПФ).
  3. Вычислена амплитуда и фаза.
  4. Построены амплитудная характеристика в логарифмическом масштабе и фазовая характеристика.

Перед началом работ небходимо подключить библиотеку FFTW, которая содержит функции БПФ.

In [ ]:
using FFTW

Теперь зададим параметры нашего сигнала.

In [ ]:
fs = 1000;    # Частота дискретизации, Гц
T = 1.0;      # Длительность, с
f_sin = 50;   # Частота синусоиды, Гц

Далее зададим временную выборку для наших данных и сгенерируем синусоидальный сигнал.

In [ ]:
t = 0:1/fs:T  # Время
x = sin.(2π * f_sin * t)  # Сигнал - синусоида
plot(t,x)
Out[0]:

Применим быстрое преобразование Фурье к сгенерированному сигналу.

In [ ]:
X = fft(x)
n = length(x)
freqs = (0:n-1) * (fs / n)
Out[0]:
0.0:0.999000999000999:999.000999000999

Раcсчитаем амплитуду и фазу входного сигнала.

In [ ]:
amplitude = abs.(X)
plot(amplitude)
Out[0]:
In [ ]:
phase = angle.(X)
plot(phase)
Out[0]:

Построим амплитудную характеристику в логарифмическом масштабе.

In [ ]:
plot(freqs[1:div(n, 2)], 20 * log10.(amplitude[1:div(n, 2)]), title="Amplitude Response (dB)", xlabel="Frequency (Hz)", ylabel="Amplitude (dB)", legend=false)
Out[0]:

Построим фазовую характеристику.

In [ ]:
plot(freqs[1:div(n, 2)], phase[1:div(n, 2)], title="Phase Response", xlabel="Frequency (Hz)", ylabel="Phase (radians)", legend=false)
Out[0]:

Вывод

В данном примере мы разобрали возможности построения АЧХ в логарифмическом маштабе и ФЧХ для произвольного сигнала.