【问题标题】:extract phase difference between two cosine functions from FFT从 FFT 中提取两个余弦函数之间的相位差
【发布时间】:2015-04-18 11:25:10
【问题描述】:

我想从 FFT 中提取两个余弦函数之间的相位差。余弦函数为:x1(n)=cos(2*pifin) 和 x2(n)=cos(2*pifi(n-m))。 基于 DFT 属性,我们有:

DFT(x1(n))= X1(f);
DFT(x2(n))= exp( (-j*2*pi*m*fi)/N )X1(f)

因此,DFT(x1(n)) 和 DFT(x2(n)) 之间的相位差等于 (-2*pimfi)/N。 但是,从我的 matlab 代码中获得的结果却完全不同!我的代码如下

 clc
clear all
Fs = 250;                    % Sampling frequency
T = 1/Fs;                     % Sample time
iniPhase=pi/6;
fin=120;
t=0:(1/Fs):2;
xu = cos(2*pi*fin*(t)) ;
xd = cos(2*pi*fin*(t)+iniPhase) ;
NFFT=length(xu);
NFFT=256;

Xu = fftshift(xu);
FFTXu = 2*fft(Xu,NFFT);
SpecXu=2*abs(FFTXu(1:NFFT/2+1));

Xd = fftshift(xd) ;
FFTXd = 2*fft(Xd,NFFT);
SpecXd=2*abs(FFTXd(1:NFFT/2+1));


[tt ind]=max(SpecXd(1:NFFT/2+1));

Phased=(angle( FFTXd));
Phaseu=(angle( FFTXu));
theta=(Phased(ind))-(Phaseu(ind));

【问题讨论】:

    标签: fft dft trigonometry phase


    【解决方案1】:

    从傅里叶变换的位移特性,你已经给出了 x1(n) 和 x2(n) 的光谱

    DFT(x1(n))= X1(f);
    DFT(x2(n))= exp( (-j*2*pi*m*fi)/N )X1(f);
    

    那么,很明显相位因子可以从

    DFT(x2)/DFT(x1), 
    

    但不是

    angle(DFT(x2) - DFT(x1)).
    

    【讨论】:

    • 谢谢。我想获得 x1 和 x2 之间的相位差而不是相位因子!
    • 执行傅里叶逆变换:IDFT(exp( (-j*2*pimfi)/N ))
    猜你喜欢
    • 1970-01-01
    • 2020-02-11
    • 2018-09-27
    • 1970-01-01
    • 2020-10-28
    • 2011-02-01
    • 2020-04-21
    • 2010-12-23
    • 1970-01-01
    相关资源
    最近更新 更多