【问题标题】:Power spectrum from autocorrelation function with MATLABMATLAB 自相关函数的功率谱
【发布时间】:2012-08-13 09:16:48
【问题描述】:

我有一些动态光散射数据。机器输出自相关函数和计数率。

我可以简单地适应 ACF

ACF = exp(-D*q^2*t) 

并获得扩散系数。

我想从功率谱中获得相同的D。我已经能够通过两种方式创建功率谱——从 ACF 的傅里叶变换和计数率。两者都同意,但功率谱不像书中的那样,所以我不确定如何使用它来计算线宽。

附件是 PDF 中的图像,显​​示了您应该获得的内容以及我从 MATLAB 获得的内容。任何人都可以理解发生了什么吗?

我在this 问题上使用了答案#3 的代码。得到的自相关结果与

完全相同
  1. 机器给我和
  2. 对光子计数数据使用 MATLAB 的 autocorr 命令。

感谢您的宝贵时间。

【问题讨论】:

  • 我在这方面没有太多经验,但是我很惊讶能很好地适应 ACF,而很适合 FFT。我有两个建议。首先,发布自相关数据的图以及您对指数的拟合;合身真的很棒吗?其次,衰减指数的傅立叶变换可以通过分析完成:参见维基百科页面上的条目 205 了解傅立叶变换。因此,根据您的情况,您也应该能够绘制预期的 FFT。将此添加到您的 FFT 图中。这可能有助于深入了解问题的根源。
  • 谢谢丹,我实际上并没有尝试过只是为了合身。我会试一试,正如你所说,它可能会让我对我的问题有所了解。我认为另一个问题是我的采样,我并没有真正告诉 matlab 关于时间延迟或绘制它的范围。

标签: matlab signal-processing fft correlation


【解决方案1】:

当您从短数据序列计算傅立叶变换时,它通常看起来很嘈杂。有许多的原因。一个原因是单个傅立叶分量的统计量不是高斯分布的,因此对多个数据样本的光谱进行平均只会慢慢提高估计的质量。

经验光谱行为中“噪声”的另一个原因是您正在(对有限数据样本)应用一个涉及病态 sinc function 的变换,并假设一个无限长的信号。为了减少这个问题,它有助于在计算傅里叶变换之前将"windowing-function" 应用于您的数据。一种更复杂但也更强大的窗口化方法是使用所谓的“Slepian 锥度”。

MATLAB 在 hamminghann 等函数中方便地实现众所周知的窗口。

【讨论】:

  • 嗨 cjh。我阅读了有关窗口函数的更多信息,并找到了一些信息,其中包括 hamming 和 hann 命令。我认为我的问题在于我没有给 matlab 足够的输入 - 如上所述。我会尝试一些事情,但我已经接近了。我发现了一些代码,它在一定范围内绘制了指数衰减,然后是它的移位 FFT,它看起来与书中应该的完全一样。所以我会尝试对我的数据应用相同类型的操作。
  • 嗨史蒂夫,很高兴它有帮助。两个想法: [1] 频谱的低频和高频分量对加窗过程和添加更多数据的反应往往不同;我认为,低频需要更多数据才能进行准确估计;此外,窗口函数还可以抑制频谱中的一些(非常)低频。 [2] 正如 Dan Becker 所指出的,D 可能存在隐含的解析表达式,绕过了整个频谱的计算。但我觉得你有充分的理由选择你选择的路线。祝你好运!
猜你喜欢
  • 2012-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-03
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
相关资源
最近更新 更多