我正在使用PCA来降低某些蛋白质模拟的MD(分子动力学)轨迹数据的维数。基本上我的数据是蛋白质原子的xyz坐标随时间变化(这意味着我有很多这个xyz坐标的框架)。此数据的大小类似于20000帧200x3(坐标原子)。我在Matlab中使用princomp
命令实现了PCA。
我想知道我是否可以对我的数据进行FFT。我有对音频信号(1D信号)进行FFT的经验。在这里,我的数据具有图片中的时间和空间。理论上可以在我的数据上实现FFT,然后使用LPF(低通滤波器)对其进行滤波。但我不确定。
答案 0 :(得分:2)
对于第一个问题“有人可以给我一些指导/代码片段/参考,以便对我的数据实施FFT吗?”:
我应该说fft
是在matlab中实现的,你不需要自己实现它。另外,对于您的情况,您应该使用fftn
(fft documentation)进行转换,然后在dessignfilt
(design filter in matalab)应用低通滤波后,应用ifftn
({ {3}})反转变换。
对于第二个问题“为什么人们更喜欢使用PCA而不是FFT和过滤...... ”:
我应该说,fft中的过滤是在信号空间中完成的,过滤后你不能在时空中推广它。您可以在inverse fft in matlab中了解有关此缺点的更多详细信息。
但是,傅里叶分析也有其他一些 严重的缺点。其中一个可能是时间 信息在转换到频率时会丢失 域即可。在查看a的傅里叶变换时 信号,不可能分辨出某个特定事件 已经发生了。如果是静止信号 - 这个 缺点不是很重要。但是,大多数 有趣的信号包含许多非固定或 暂时性特征:漂移,趋势,突变, 和事件的开始和结束。这些 特征往往是最重要的部分 信号和傅立叶分析不适合检测 它们。