用法:
cusignal.spectral_analysis.spectral.periodogram(x, fs=1.0, window='boxcar', nfft=None, detrend='constant', return_onesided=True, scaling='density', axis=- 1)
使用周期图估计功率谱密度。
- x:array_like
测量值的时间序列
- fs:浮点数,可选
x
时间序列的采样频率。默认为 1.0。- window:str 或 tuple 或 数组,可选
想要使用的窗口。如果
window
是字符串或元组,则传递给get_window
生成窗口值,默认为DFT-even。有关窗口和所需参数的列表,请参阅get_window
。如果window
是数组,它将直接用作窗口,其长度必须为nperseg。默认为‘boxcar’。- nfft:整数,可选
使用的 FFT 的长度。如果
None
将使用x
的长度。- detrend:str 或 function 或
False
,可选 指定如何去除每个段的趋势。如果
detrend
是一个字符串,它作为type
参数传递给detrend
函数。如果它是一个函数,它接受一个段并返回一个去趋势的段。如果detrend
是False
,则不进行去趋势。默认为‘constant’。- return_onesided:布尔型,可选
如果
True
,返回真实数据的 one-sided 频谱。如果False
返回 two-sided 频谱。默认为True
,但对于复杂数据,始终返回 two-sided 频谱。- scaling:{ ‘density’, ‘spectrum’ },可选
选择计算功率谱密度 (‘density’),其中
Pxx
的单位为 V**2/Hz,计算功率谱 (‘spectrum’),其中Pxx
的单位为 V**2,如果x
以 V 为单位,fs
以 Hz 为单位。默认为‘density’- axis:整数,可选
计算周期图的轴;默认值在最后一个轴上(即
axis=-1
)。
- f:ndarray
采样频率数组。
- Pxx:ndarray
x
的功率谱密度或功率谱。
参数:
返回:
例子:
>>> import cusignal >>> import cupy as cp >>> import matplotlib.pyplot as plt >>> cp.random.seed(1234)
生成一个测试信号,一个 1234 Hz 的 2 Vrms 正弦波,被 10 kHz 采样的 0.001 V**2/Hz 白噪声破坏。
>>> fs = 10e3 >>> N = 1e5 >>> amp = 2*cp.sqrt(2) >>> freq = 1234.0 >>> noise_power = 0.001 * fs / 2 >>> time = cp.arange(N) / fs >>> x = amp*cp.sin(2*cp.pi*freq*time) >>> x += cp.random.normal(scale=cp.sqrt(noise_power), size=time.shape)
计算并绘制功率谱密度。
>>> f, Pxx_den = cusignal.periodogram(x, fs) >>> plt.semilogy(cp.asnumpy(f), cp.asnumpy(Pxx_den)) >>> plt.ylim([1e-7, 1e2]) >>> plt.xlabel('frequency [Hz]') >>> plt.ylabel('PSD [V**2/Hz]') >>> plt.show()
如果我们平均频谱密度的后半部分,以排除峰值,我们可以恢复信号上的噪声功率。
>>> cp.mean(Pxx_den[25000:]) 0.00099728892368242854
现在计算并绘制功率谱。
>>> f, Pxx_spec = cusignal.periodogram(x, fs, 'flattop', scaling='spectrum') >>> plt.figure() >>> plt.semilogy(cp.asnumpy(f), cp.asnumpy(cp.sqrt(Pxx_spec))) >>> plt.ylim([1e-4, 1e1]) >>> plt.xlabel('frequency [Hz]') >>> plt.ylabel('Linear spectrum [V RMS]') >>> plt.show()
功率谱中的峰值高度是 RMS 幅度的估计值。
>>> cp.sqrt(Pxx_spec.max()) 2.0077340678640727
相关用法
- Python cusignal.spectral_analysis.spectral.welch用法及代码示例
- Python cusignal.spectral_analysis.spectral.spectrogram用法及代码示例
- Python cusignal.spectral_analysis.spectral.lombscargle用法及代码示例
- Python cusignal.spectral_analysis.spectral.csd用法及代码示例
- Python cusignal.spectral_analysis.spectral.coherence用法及代码示例
- Python cusignal.spectral_analysis.spectral.istft用法及代码示例
- Python cusignal.spectral_analysis.spectral.stft用法及代码示例
- Python cusignal.windows.windows.hann用法及代码示例
- Python cusignal.windows.windows.general_gaussian用法及代码示例
- Python cusignal.waveforms.waveforms.chirp用法及代码示例
- Python cusignal.windows.windows.gaussian用法及代码示例
- Python cusignal.windows.windows.hamming用法及代码示例
- Python cusignal.windows.windows.get_window用法及代码示例
- Python cusignal.waveforms.waveforms.gausspulse用法及代码示例
- Python cusignal.peak_finding.peak_finding.argrelmin用法及代码示例
- Python cusignal.windows.windows.bartlett用法及代码示例
- Python cusignal.windows.windows.chebwin用法及代码示例
- Python cusignal.windows.windows.general_cosine用法及代码示例
- Python cusignal.peak_finding.peak_finding.argrelextrema用法及代码示例
- Python cusignal.convolution.convolve.convolve2d用法及代码示例
注:本文由纯净天空筛选整理自rapids.ai大神的英文原创作品 cusignal.spectral_analysis.spectral.periodogram。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。