Tag: 信号处理

Excel中的FFT – 如何获得最真实的频谱

我试图使用Excel获取这些数据的FFT频谱: gggttt.host.sk/sample.xls 。 @Paul R在另外一个问题上帮了我很大的忙,弄清楚垃圾桶的含义,但是还有一些问题我想了解。 首先,即使模型以对数标度表示,Excel也不会以dB为单位显示它们。 你怎么做这些幅度转换为dB? 此外,还有一个关于窗口函数,锯齿等的问题。由于我正在从一个时期开始处理数据,似乎不需要应用窗口函数。 另外,因为我只需要基本的,二次和三次谐波,而且在上面的箱子中没有其他的峰值,所以照顾混淆似乎也不是必须的。 然而,非常值得关注的是非n ^ 2点数 – 1253。我试图用零填充到2048或者在第一个1024上进行FFT,忽略剩余的229点,最后每6然后删除每一个第52点,最后一个点加倍以获得必要的1024.最后,用零填充结果是最糟糕的方法 – 在整个频谱中重复高低条。 截断数据(仅处理前1024个点)似乎效果最好。 我真的很想知道在信号处理方面有什么经验的人会推荐作为产生最真实光谱的最佳方法。 下面是在这些数据上应用FFT的两种不同方式的示例: gggttt.host.sk/fig_truncated.jpg gggttt.host.sk/fig_padded.jpg gggttt.host.sk/fig_every_6th_and_52nd_point_deleted.jpg

使用Excel的VBA进行快速傅里叶变换

我试图在MS的Excel VBA中实现一个快速傅里叶变换(Radix-2)。 我正在使用的代码从工作表中的范围内拉取数据,进行计算,然后将结果转储到相邻的列中。 我遇到的麻烦是1)知道如何处理结果X [k]数组,2)将这些结果与Excel内置的FFT(它们当前不匹配)的结果进行匹配。 代码如下所示。 在此先感谢您的帮助。 Sub Enforce_DecimationInTime() On Error GoTo ERROR_HANDLING Dim SubName As String SubName = "Enforce_DecimationInTime()" Dim WS As Worksheet Dim n As Long, v As Long, LR As Long, x As Long Set WS = Worksheets("FFT") LR = WS.Range("A" & Rows.Count).End(xlUp).Row n = LR – 1 Do Until 2 ^ […]