То, что вы называете fs
в вашем коде, - это не частота дискретизации, а обратная величина: период выборки.
Функция fftfreq
принимает выборку rate в качестве второго аргумента. Поскольку в качестве второго аргумента вы указываете период выборки, частоты, возвращаемые функцией, неправильно масштабируются на (1/(Ts^2))
.
Я переименовал fs
в Ts
и изменил второй аргумент с fftfreq
на частоту дискретизации 1.0/Ts
. Я думаю, вам также нужно сдвинуть результат fft
.
# Number of points
N = 2^14 - 1
# Sample period
Ts = 1 / (1.1 * N)
# Start time
t0 = 0
tmax = t0 + N * Ts
# time coordinate
t = t0:Ts:tmax
# signal
signal = sin.(2π * 60 .* t) # sin (2π f t)
# Fourier Transform of it
F = fft(signal) |> fftshift
freqs = fftfreq(length(t), 1.0/Ts) |> fftshift
# plots
time_domain = plot(t, signal, title = "Signal")
freq_domain = plot(freqs, abs.(F), title = "Spectrum", xlim=(-1000, +1000))
plot(time_domain, freq_domain, layout = 2)
savefig("Wave.pdf")