Python中不加涂抹的FFT

2024-04-23 07:46:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从en实验中生成一些合成数据。我得到了正频域的理论PSD,并计算出了一些时间序列。比C对我的数据做一些处理,做一个FFT并在频域进行拟合。我将首先向您展示一些代码,然后解释主要问题:

我评估理论PSD的箱子是我的箱子:

bins = np.linspace(1,1e3,2**13)

由此我计算我的时间序列:

^{pr2}$

其中dataCOS是PSD的值,对应的bins和t

t_full = np.linspace(0,1,2**13, endpoint = False)

我的问题是,我需要一个不抹黑我的时间序列的FFT。好吧,通常是不可能的,但是,如果我是正确的,并且在帧中以匹配的方式为每个时间点添加一个频率单元(最高和最低频率仍然可见),它应该可以工作。所以,我的问题是,箱子和t_full如何成形??在

我的想法是:两者都需要有相同数量的点,最高和最低频率必须在时域可见。但我不确定,希望你能帮我。在

编辑*******************************************首先,为了进一步说明我的问题,请看所附的图片:enter image description here在第一个例子中,你有一个经典的结果,一个反变换在时间域中有太多的点,但所有的箱子都是周期性的。enter image description here在第二个是一样的,但是现在它们不再是周期性的了一个人得到了预期的污点。当然,这里可以使用过滤器来改进,但是如果您想适应初始的red函数,就会遇到大问题。最后一张图是我想要的结果:所有函数在时间范围内都是周期性的,所以没有涂抹。第二,每对t_-bins都包含我之前添加的一个频率,所以在计算极限处的云会消失。enter image description here

为了得到这个结果,这里是所需的垃圾箱和垃圾箱的间距

bins = np.linspace(0,2**14,2**14, endpoint = False)
t_full = np.linspace(0,1,2*bins.shape[0], endpoint = False)

Tags: 数据falsenp时间序列理论endpointfull
1条回答
网友
1楼 · 发布于 2024-04-23 07:46:29

您可能只需要在FFT之前应用一个合适的window function来防止{a2}。我不是Python用户,所以我不能给出代码,但是公式的应用非常简单。尝试一个von HannHamming窗口(它们相似,但形状略有不同)。在

相关问题 更多 >