gpt4 book ai didi

python - 绘制给定数据集的功率谱密度时需要 abs () 方法

转载 作者:行者123 更新时间:2023-11-30 09:19:59 24 4
gpt4 key购买 nike

大家好, 我是数据科学的新手,想知道使用abs()函数并对作为python scipy的fft()函数输出接收到的值进行平方的意义。 fftpack 库,在尝试绘制数据集的功率谱密度时使用。我发现许多绘制功率谱密度的代码示例确实使用了abs(),然后对之后获得的值进行平方。谁能给我一个这样做的理由吗?难道我们不能直接绘制从 python 的 scipy.txt 中的 fft() 函数获得的值吗? fftpack 库?

这是我到目前为止编写的代码,通过引用一些代码示例来绘制功率谱密度,

import scipy.io as sio
import numpy as np
Import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_csv("denoised.csv")
data = df.values
x = data[:,0]

from scipy.fftpack import fft,fftfreq
dft= fft(data)
PSD = np.abs(dft) ** 2

最佳答案

通用 FFT 消耗复值数据(即实部和虚部)并返回复值数据。即使您的输入仅为实数,我熟悉的所有 FFT 例程(FFTW、Numpy 的 FFT、Scipy 的 FFTPACK、Matlab 等)都具有返回复数值数据的 fft()

所以。要绘制复值向量,我们必须以某种方式将其转换为实数。一种选择是分别绘制实数和图像分量,但这通常不如幅度/abs(实数平方加图像平方)那么有趣:实数与图像可以告诉我们 <信号的相位,对于真实信号来说通常是随机且无趣的,而幅度则结合了实部和图像分量,并以直接的方式告诉我们给定频率仓中的能量量,这很有用!

如果复数的大小是它的能量,那么大小的平方就是它的幂。工程师通常喜欢看到幅度平方,因为他们可以将该数字与他们正在使用的硬件的额定功率等进行交叉引用。这只是一个约定。

一些旁注:如果您的数据是真实的,实数到复数 FFT 的运行速度会更快。叫做rfft但它的输出有点令人困惑:它返回格式为 [real, imag, real, imag, …] 的复杂输出。 (社区对此 Scipy issue 中的 FFTPACK 这种不寻常且非标准的约定表示担忧。)如果可能,我通常尝试使用 numpy.fft.rfft因为它如人们所期望的那样返回复值数据。 (此实数到复数 rfft 返回的复数值输出数量是复数到复数 fft 的一半,这就是运行时的位置改进来自于。)

另一个旁注:这个问题与数据科学无关,只是与数字信号处理相关。考虑在 http://dsp.stackexchange.com 上提出此类问题下次(不过你在这里问没什么大不了的)。

关于python - 绘制给定数据集的功率谱密度时需要 abs () 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43287700/

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