如何对时间序列数据进行 FFT大家好,
我有几个问题要问 JMP 社区。
1a. 是否可以在 JMP 中批处理多个文件(.csv)? 如果是这样,我将如何处理?
1b. 是否可以对时间序列数据执行 FFT? 如果是这样,是否有 JMP 无法执行的其他频域分析?
如果这些信息中的任何一个在其他地方被覆盖,如果你能指出它的位置,我将不胜感激。 感谢您的时间。
分析脚本回复:如何对时间序列数据执行 FFT你好@达米安,
最近在做一些 FFT 工作时看到了这篇文章。
如前所述,您可以对时间序列数据执行 FFT,但必须编写脚本。 您必须根据行数和采样率生成自己的频率列。 此外,要牢记的一件非常重要的事情是,您需要根据数据表中的行数来缩放 FFT 结果。 我不知道为什么 JMP 不自动执行此操作。
当您调用 FFT 函数时,您需要在 FFT 调用函数中包含一个命令 <
FFT({数据}, <<比例(1/Nrows(dt)))
其中 dt 是 JSL 脚本中对数据表的引用。 如果不这样做并执行反向 FFT,您将得到比原始数据大 NRows(dt) 倍的结果。
不幸的是,脚本索引或在线 JMP 帮助中没有很多信息来描述 FFT 及其完成方式或为什么缩放不自动存在。
无论如何,使用 FFT 命令,您可以绘制 FFT 输出的绝对值与您计算的频域的关系,并查看频率峰值的位置。
希望这可以帮助!,
DS
回复:如何对时间序列数据执行 FFT避免部分脚本的一种方法:File->MultipleFileImport。 它需要目录中的 csv 文件。
如果要使用fft()函数,这里有一些FFT思路(需要写JSL,不像时序平台):
傅里叶变换视频- 每 1/30 秒显示音频文件中的频率
巴特沃斯二维 FFT 滤波器- 从图像中滤除高频
FFT 和 DTMF - 从拨号记录中提取成对的电话触摸板音
追踪图片- 两个 1D FFT 和代码以重建分辨率降低的轮廓
回顾它,我认为第 4 个是使用第 2 个中描述的粗砖墙滤波器——截断 FFT bin 而不是逐渐变细。
回复:如何对时间序列数据执行 FFT你好@达米安,
我想您可以使用 JMP 批处理/加载 CSV 文件。 至少,我知道您可以编写 JMP 脚本,以便它循环遍历您目录中的所有 CSV 文件,并构建多个或单个数据表以在 JMP 中进行分析。 当我访问我们的质量数据并需要合并来自不同来源的数据时,我会定期这样做。 根据连接速度和文件大小,它可能会很慢。 我不是最好的程序员,所以我确信有比简单循环更高效和优雅的方法。
在时间序列平台中,有一个非常基本的谱密度特征,它可能能够处理您所追求的,具体取决于复杂性。 我确实找到了这个邮政从@杰瑞鱼,在 2014 年的 JMP Discover 峰会上展示,这是一个增强时间序列平台的插件。 可以找到插件这里. 我还没有测试过它,所以我不能评论它的功能。
最后,时间序列平台(分析 > 专业建模 > 时间序列)有很多可能适合您的选项——实际上取决于您的需求——但它可以进行季节性 ARIMA 模型和预测。 Help > Sample Data Index 中有很多示例数据和脚本。
这至少应该让你开始。
希望这可以帮助!,
DS