Python, FFT и D C анализ смещения - PullRequest
0 голосов
/ 07 апреля 2020

Я проверяю БПФ на квадратном сигнале (100 Гц, 0 В-5 В) с коэффициентом заполнения 50%, и я не понимаю, почему мое смещение D C огромно?

Теоретически это должно быть 2,5 В?

Спасибо, С наилучшими пожеланиями.

Принципиальная схема в порядке, а остальные гармоники верны.

Квадратный сигнал 100 Гц, TTL совместимый 0V-5V, рабочий цикл 50%

БПФ, проблема смещения D C, фундаментальный в порядке, гармоники в порядке

from scipy.fftpack import fft
from scipy import signal
import matplotlib.pyplot as plt
import numpy as np

#
# configuration
# time analyse = L * (1/Fsample)
#
L = 512 # lenght buffer
Fsample = 2000 # frequency sample
Fsignal = 100 # frequency

#********************************

# perdiode sample
Tsample = 1.0/Fsample

# time vector, start = 0s, stop = 0.1024s, step = (0.1024s / (1/Fe))
t = np.linspace(0.0, L*Tsample, L)

# signal definition, DC offet = 2.5V, Amplitude = 2.5V
signal = 2.5 + 2.5*signal.square(2 * np.pi * Fsignal * t, 0.5)

# plot time signal
plt.subplot(2,1,1)
plt.plot(t, signal)

# fft of time signal
yf = fft(signal)

# time vector of fft 
xf = np.linspace(0.0, 1.0/(2.0*Tsample), L//2)

# plot spectral
plt.subplot(2,1,2)
plt.plot(xf, 2.0/L * np.abs(yf[0:L//2]))

1 Ответ

0 голосов
/ 09 апреля 2020

В последней строке коэффициент нормализации был неверным.

Это был не 2/L, а 1/L.

Правильный коэффициент нормализации plt.plot(xf, 1.0/L * np.abs(yf[0:L//2]))

Код работает нормально!

БПФ, правильная амплитуда

...