小编Ben*_*rit的帖子

对于实际问题,Python 中离散功率谱密度的正确归一化

我正在努力解决功率谱密度(及其倒数)的正确归一化问题。

我遇到了一个实际问题,假设加速度计的读数以功率谱密度(psd)的形式(以幅度^2/Hz为单位)。我想将其转换回随机时间序列。然而,首先我想了解 PSD 的“前进”方向,即时间序列。

根据[1],时间序列x(t)的PSD可以通过以下公式计算:

PSD(w) = 1/T * abs(F(w))^2 = df * abs(F(w))^2
Run Code Online (Sandbox Code Playgroud)

其中T是x(t)的采样时间,F(w)是x(t)的傅里叶变换,df=1/T是傅里叶空间中的频率分辨率。然而,我得到的结果并不等于我使用 scipy Welch 方法得到的结果,请参见下面的代码。

第一个代码块取自 scipy.welch 纪录片:

from scipy import signal
import matplotlib.pyplot as plt

fs = 10e3
N = 1e5
amp = 2*np.sqrt(2)
freq = 1234.0
noise_power = 0.001 * fs / 2
time = np.arange(N) / fs
x = amp*np.sin(2*np.pi*freq*time)
x += np.random.normal(scale=np.sqrt(noise_power), size=time.shape)

f, Pxx_den = signal.welch(x, fs, nperseg=1024)
plt.semilogy(f, Pxx_den)
plt.ylim(\[0.5e-3, 1\])
plt.xlabel('frequency \[Hz\]')
plt.ylabel('PSD \[V**2/Hz\]')
plt.show()
Run Code Online (Sandbox Code Playgroud)

我注意到的第一件事是绘制的 psd 随变量 fs 变化,这对我来说似乎很奇怪。(也许我需要相应地调整 …

python fft normalization spectral-density dft

5
推荐指数
1
解决办法
3052
查看次数

标签 统计

dft ×1

fft ×1

normalization ×1

python ×1

spectral-density ×1