cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
The Discovery Summit 2025 Call for Content is open! Submit an abstract today to present at our premier analytics conference.
See how to use JMP Live to centralize and share reports within groups. Webinar with Q&A April 4, 2pm ET.
Choose Language Hide Translation Bar
View Original Published Thread

如何在 JMP 中执行频谱分析?

sensij
Level I

我有超过 800k 点的数据系列,我想在频域中查看它们。我尝试进行“时间序列分析”来创建谱密度数据,但 JMP 只是挂起。我让它挂了几分钟,然后我的显卡死了......真是巧合!

 

如果您想尝试一下,请附上数据文件,第一列是以秒为单位的时间戳,第二列是数据。请告诉我是否有办法做到这一点。

 

谢谢,

贾森

This post originally written in English (US) has been computer translated for you. When you reply, it will also be translated back to English (US).

2 ACCEPTED SOLUTIONS

Accepted Solutions
XanGregg
Staff

回复: 如何进行光谱分析?

时间序列中的频谱密度命令显然使用了较慢的算法。 有一个名为“FFT”的 JSL 函数,它将使用快速算法,但前提是点数是一个很好的整数(有很多小因子)。 例如,如果我将数据截断为恰好 800,000 行,则立即返回以下 JSL:

data = Column( “y” ) << 获取值;显示( N 行( 数据 ) );

f = FFT( {数据} );显示( N 行( f[1] ) );

当前数据表() << 新列("freq", 设置值( f[1] ));

回复: 如何进行光谱分析?

使用 JMP 11 中 MATLAB 的 JMP 接口,通过我在 MATLAB 中编写的 FFT 分析脚本运行这些数据。 看起来你的 SR 是 1000Hz,所以这可以让你的分辨率达到你的奈奎斯特频率。 500赫兹。 很多低频能量朝向直流,但在 40 Hz - 300 Hz 之间似乎确实存在一些有趣的峰值。 这是您对这些数据所期望的结果类型吗?

使用 MATLAB 返回的结果在 Graph Builder 中绘制:

undefined

6 REPLIES 6
XanGregg
Staff

回复: 如何进行光谱分析?

时间序列中的频谱密度命令显然使用了较慢的算法。 有一个名为“FFT”的 JSL 函数,它将使用快速算法,但前提是点数是一个很好的整数(有很多小因子)。 例如,如果我将数据截断为恰好 800,000 行,则立即返回以下 JSL:

data = Column( “y” ) << 获取值;显示( N 行( 数据 ) );

f = FFT( {数据} );显示( N 行( f[1] ) );

当前数据表() << 新列("freq", 设置值( f[1] ));

This post originally written in English (US) has been computer translated for you. When you reply, it will also be translated back to English (US).

回复: 如何进行光谱分析?

使用 JMP 11 中 MATLAB 的 JMP 接口,通过我在 MATLAB 中编写的 FFT 分析脚本运行这些数据。 看起来你的 SR 是 1000Hz,所以这可以让你的分辨率达到你的奈奎斯特频率。 500赫兹。 很多低频能量朝向直流,但在 40 Hz - 300 Hz 之间似乎确实存在一些有趣的峰值。 这是您对这些数据所期望的结果类型吗?

使用 MATLAB 返回的结果在 Graph Builder 中绘制:

undefined

This post originally written in English (US) has been computer translated for you. When you reply, it will also be translated back to English (US).

sensij
Level I

回复: 如何进行光谱分析?

感谢您的观看!是的,我找到了一些其他软件(AD Instruments 的 Labchart)来进行 FFT,并且同意有一些有趣的峰值。120 Hz 和 240 Hz 表示来自整流交流电源的噪声。一些 < 1 Hz 的能量分解为具有一致倍数的峰值,可能与系统中机械部件的旋转频率相关。

我发帖主要是为了看看 JMP 中是否有一些我没有正确使用的功能,但看来频域统计分析确实不是他们的事。

This post originally written in English (US) has been computer translated for you. When you reply, it will also be translated back to English (US).

回复: 如何进行光谱分析?

出色的! 感谢您提供有关这些数据的信息。 我很高兴我的分析符合您的期望。 JMP 实际上非常适合频域数据的统计分析,但其他一些工具(例如 MATLAB)非常适合执行专门的操作,例如对任意大小的数组执行 FFT、滤波器设计、卷积等。这就是 JMP 的可扩展性非常好的原因 - 能够访问 SAS、MATLAB 和 R,从而能够在需要时利用这些工具,然后将数据带回 JMP 进行可视化和分析。

我通过我用 JSL 编写的 FFT 应用程序运行了您的数据 - 它的工作方式就像 JMP 平台:

undefined

当您单击“确定”时,它正在连接到 MATLAB 并运行一些预先存在的代码,将时域数据转换为频域,然后将数据返回到新的 JMP 数据表以进行进一步分析和绘图。 如果我需要在 MATLAB 中对信号进行额外处理(例如运行带通滤波器),我也可以在 MATLAB 中执行此操作,然后再将数据返回到 JMP。

但当数据返回 JMP 时,我可以根据需要进行分析或可视化。 例如,我使用本地数据滤波器仅关注整流交流源分量 > 3 Hz 的信号部分。

undefined

然后使用“行”>“行选择”>“选择主导”来关注 Pareto 前沿上的点。 JMP 确定了 33 个 FFT 箱,我可以使用“表”>“子集”对其进行子集化。 如果我选中“链接到原始数据表”,则子集和完整数据集将被链接。 我放置了一个 + 标记,并将子集中的这些点着色为红色,并且它们在原始数据表中重新着色。

undefined

根据您试图回答的问题,将决定分析这些数据的最佳方法,但是一旦转换后的数据返回 JMP,您就可以以任何您想要的方式探索它。 @Xan 关于在 JSL 中使用 FFT 函数的建议也很棒。 我只是选择使用 MATLAB,因为我已经有了一个在 MATLAB 中执行各种信号处理操作的代码库,并且我还经常需要使用 IIR 或 FIR 滤波器来过滤数据,作为分析步骤的一部分,MATLAB 非常适合这项任务(用于设计滤波器和执行滤波步骤)。

This post originally written in English (US) has been computer translated for you. When you reply, it will also be translated back to English (US).

Fiona0723
Level I

回复: 如何进行光谱分析?

您能否分享您的脚本并让我尝试在我的数据中运行 FFT?

This post originally written in English (US) has been computer translated for you. When you reply, it will also be translated back to English (US).

Nick_PV_tech
Level II

回复: 如何进行光谱分析?

你好丹尼尔,

 

我同意菲奥娜的请求。 您可以分享一下代码吗?

 

谢谢

This post originally written in English (US) has been computer translated for you. When you reply, it will also be translated back to English (US).