Как получить диапазон частотных бинов для PSD - PullRequest
0 голосов
/ 06 сентября 2018

Я вычисляю PSD сигнала и хочу получить мощность в диапазоне частот от 0 Гц до 20 Гц. Это то, что я пытался использовать linspace

df = pd.read_csv(path)
df = pd.DataFrame(df)
x = np.linspace(0, 20, 41)
dt = x[1] - x[0]
fs = 1 / dt
f,P = signal.welch(df, fs=5, nperseg=30, noverlap=5,axis=0)

Здесь я получаю 6 частотных компонентов от 0 Гц до 2,5 Гц, но я хочу вычислить мощность для диапазона частот до 20 Гц

Может ли кто-нибудь помочь мне здесь сделать то же самое.

1 Ответ

0 голосов
/ 06 сентября 2018

PSD изменяется только от 0 до fs / 2, вы должны указать правильную частоту дискретизации в параметре fs, в вашем случае - 1024.

Этот пример иллюстрирует, как получить PSD для синусоидального сигнала:

import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import welch

Fs = 1024 # Hz
Ts = 1/Fs
time = np.arange(0, 2, Ts) # 2 seconds

freqs = [20, 50, 100] # frequencies in Hz
x = np.zeros(len(time))
for f in freqs:
    x += np.sin(2 * np.pi * f * time)

plt.plot(x)

f, P = welch(x, fs=Fs)

plt.figure()
plt.stem(f, P)
...