извлечь разность фаз между двумя функциями косинуса из БПФ

Я хочу извлечь разницу фаз между двумя функциями косинуса из БПФ. Функции косинуса: x1(n)=cos(2*pifin) и x2(n)=cos(2*pifi(n-m)). Основываясь на свойствах ДПФ, мы имеем:

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));

person user51780    schedule 18.04.2015    source источник


Ответы (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)).
person lxg    schedule 19.04.2015
comment
Спасибо. Я хочу получить разность фаз между x1 и x2, а не фазовый коэффициент! - person user51780; 20.04.2015
comment
выполнить обратное преобразование Фурье: IDFT(exp((-j*2*pimfi)/N )) - person lxg; 20.04.2015