Многоконусный спектральный анализ со спектром в python - PullRequest
0 голосов
/ 10 июля 2020

Я использую анализ с несколькими конусами с использованием библиотеки спектров на python (https://pyspectrum.readthedocs.io/en/latest/install.html), но я не могу полностью понять амплитуду выходного сигнала.

Вот фрагмент кода для иллюстрации:

from spectrum import *
N=500
dt=2*10**-3
# Creating a signal with 2 sinus waves.
x = np.linspace(0.0, N*dt, N)
y = np.sin(50.0 * 2.0*np.pi*x) + 0.5*np.sin(80.0 * 2.0*np.pi*x)

# classical FFT
yf = fft.fft(y)
xf = np.linspace(0.0, 1.0/(2.0*dt), N//2)

# The multitapered method
NW=2.5
k=4
[tapers, eigen] = dpss(N, NW, k)
Sk_complex, weights, eigenvalues=pmtm(y, e=eigen, v=tapers, NFFT=500, show=False)

Sk = abs(Sk_complex)
Sk = np.mean(Sk * np.transpose(weights), axis=0)

# ploting both the results
plt.plot(xf,abs(yf[0:N//2])*dt*2)

plt.plot(xf,Sk[0:N//2])

Оба результата аналогичны и обнаруживают пик частоты при 50 и 80 Гц. Классическое БПФ также находит хорошую амплитуду (1 и 0,5), но метод множественного конуса не находит правильной амплитуды. В этом примере это примерно в 5 раз важнее. Кто-нибудь вообще знает, как правильно отображать результаты? спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...