Engee 文档
Notebook

对数幅度-相位频率响应

在本例中,采用以下步骤构建对数幅度-相位频率响应:

  1. 已创建具有预设频率的正弦波。
  2. 快速傅立叶变换(FFT)应用于信号。
  3. 幅值和相位进行计算。
  4. 构造对数尺度上的振幅特性和相位特性。

在开始工作之前,有必要连接包含FFT函数的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

计算输入信号的幅度和相位。

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]:

结论

在这个例子中,我们分析了在对数尺度上构建频率响应和任意信号的频率响应的可能性。