【问题标题】:Matlab: finding phase difference using cpsdMatlab:使用cpsd查找相位差
【发布时间】:2015-05-14 02:49:10
【问题描述】:

据我了解,当使用 cpsd 函数时:

[Pxy,f] = cpsd(x,y,window,Ns,NFFT,Fs); 

matlab 将时间序列数据切割成您指定大小的较小窗口。并且窗口移动了 Ns 个数据点。最终的[Pxy, f] 是从每个单独窗口获得的结果的平均值。如果我对这个过程有错误,请纠正我。

我的问题是,如果我以特定频率使用 angle(Pxy),比如 34Hz。这会给我信号xy 在34Hz 频率下的相位差吗?

我对此表示怀疑,因为如果 Pxy 是每个单独窗口之间的平均值,并且因为每个单独的窗口偏移都被偏移了,这是否意味着平均 Pxy 的相位受窗口移位?

我已尝试通过确保窗口偏移对应于对应于 34Hz 的全相位差的整数来纠正此问题。这是正确的吗?

关于我正在做的事情的一些背景:

  • 我基本上在 60 秒内以 1000Hz 采样率进行了多次时间序列压力测量。

  • 功率谱分析表明,每个信号在 34 Hz 处都有一个峰值频率。 (所有窗口的平均值)

  • 我想比较每个信号在 34Hz 峰值下的相位差。

  • 单个窗口的 F​​FT 分析表明,该峰值频率会四处移动。所以我不确定 cpsd 是否是解决这个问题的正确方法。

  • 我目前正在考虑尝试使用 xcorr 来计算信号之间的总体时间延迟,然后从中计算相位差。我也听说过希尔伯特变换,但我还不知道它是如何工作的。

【问题讨论】:

    标签: matlab fft phase


    【解决方案1】:

    是的,cpsd 有效。 您可以通过设置两个输入信号来测试您的结果,例如:

    t=[0:0.001:5];
    omega=25;
    x1=sin(2*pi*omega*t);
    x2=sin(2*pi*omega*t+pi/3);
    

    可以查看cpsd计算的相移是否为pi/3。

    【讨论】:

      猜你喜欢
      • 2021-04-14
      • 2015-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多