首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取PSD的频率段范围

如何获取PSD的频率段范围
EN

Stack Overflow用户
提问于 2018-09-06 19:39:09
回答 1查看 190关注 0票数 1

我正在计算一个信号的功率谱密度,我想从频率范围0赫兹到20赫兹的功率。这就是我尝试使用linspace的方法。

代码语言:javascript
复制
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)

在这里,我得到了从0 0Hz到2.5 0Hz的6个频率分量,但我想计算频率范围到20 0Hz的功率。

这里有人能帮我做同样的事吗?

EN

回答 1

Stack Overflow用户

发布于 2018-09-06 20:41:15

PSD仅从0到fs/2,您应该在fs参数中指定正确的采样频率,在您的情况下为1024。

此示例说明如何获取正弦信号的PSD:

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52203276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档