gpt4 book ai didi

Scipy周期图术语混淆

转载 作者:行者123 更新时间:2023-12-04 21:42:46 26 4
gpt4 key购买 nike

我对 scipy.signal.periodogram 中使用的术语感到困惑,即:

缩放:{'密度','频谱'},可选
在计算功率谱密度('密度')之间进行选择
哪里Pxx如果 x,单位为 V*2/Hz以 V 为单位测量并计算
功率谱('谱'),其中 Pxx如果 x,则单位为 V*2是
以 V 为单位。默认为“密度”

(见:http://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.periodogram.html)

1) 一些测试表明,选项“密度”的结果取决于信号和窗口长度以及采样频率(随着信号长度的增加而增加)。怎么来的?我会说,正是密度不应该依赖于这些东西。如果我采用更长的信号,我应该得到更准确的估计,而不是不同的结果。更不用说对窗口长度的依赖也很令人惊讶。
结果在无限信号的极限处发散,这可能是能量的特征,而不是功率的特征。当长度增加时,周期图不应该收敛到实际的理论 PSD 吗?如果是这样,我是否应该在 signal.periodogram 方法之外执行另一个标准化?

2) 相反,我看到替代选项 'spectrum' 给出了我之前所说的功率谱密度,也就是说,它给出了独立于窗口段和窗口长度并与理论计算一致的结果。例如,对于 Asin(2PIft),两侧解在 -f 和 f 处产生两个峰,每个峰的高度为 0.25*A^2。

关于这个主题有很多文献,但我的印象是也有很多不兼容的术语,所以我将感谢您的澄清。直截了当的问题是如何解释这些选项及其单位。 (我习惯看到标有“功率谱密度”的 V^2/Hz)。

最佳答案

让我们取一个名为 data 的实数数组,长度为 N,采样频率为 fs。我们称时间为 dt=1/fs,T = N * dt。在频域中,频率仓 df = 1/T = fs/N。
功率谱 PS (scipy.periodogram 中的 scaling='spectrum')计算如下:

import numpy as np
import scipy.fft as fft
dft = fft.fft(data)
PS = np.abs(dft)**2 / N ** 2
它的单位是V^2。可以这样理解。类比连续傅里叶变换,信号的能量E为:
E := np.sum(data**2) * dt = 1/N * np.sum(np.abs(dft)**2) * dt
(根据帕塞瓦尔定理)。信号的功率 P 是总能量 E 除以信号 T 的持续时间:
P := E/T = 1/N**2 * np.sum(np.abs(dft)**2)
功率 P 仅取决于离散傅立叶变换 (DFT) 和样本数 N。而不直接取决于采样频率 fs 或信号持续时间 T。因此每个频率 channel 的功率,即功率谱 SP,由下式给出上面的公式:
PS = np.abs(dft)**2 / N ** 2
对于 功率谱密度PSD (scipy.periodogram 中的缩放=“密度”),需要将 PS 除以 DFT 的频率 bin,df:
PSD := PS/df = PS * N * dt = PS * N/fs
因此:
PSD = np.abs(dft)**2 / N * dt
这具有 V^2/Hz = V^2 * s 的单位,现在取决于采样频率。这样,在频率范围内对 PSD 进行积分会得到与对 PS 的各个值求和的结果相同。
这应该可以解释您在更改窗口、采样频率、持续时间时看到的关系。

关于Scipy周期图术语混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22338415/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com