Я тестирую фазовый выход fft сигнала sin и сигнала cos. Приведенный ниже сценарий создает сигналы и выполняет для них БПФ. Бункеры, амплитуда которых ниже порога, обнуляются для фазового спектра, потому что меня интересует только фаза сигналов.
% 10khz 10 second long time interval
t = 0:1 / 10000:10;
%1khz cos
c = cos(2 * pi * 1000 .* t);
%1khz sin
s = sin(2 * pi * 1000 .* t);
%ffts
C = fft(c)/length(c);
S = fft(s)/length(s);
%magnitude and phases of ffts
CA = abs(C); %cos magnitude
SA = abs(S); %sin magnitude
Cthresh = max(CA) * 0.5;
Sthresh = max(SA) * 0.5;
%find all indeces below the threshold
Crange = find(CA < Cthresh);
Srange = find(SA < Sthresh);
%set the indeces below the threshold to 0 - phase will be meaningless for
%noise values
CP = angle(C);
CP(Crange) = 0;
SP = angle(S);
SP(Srange) = 0;
Если вы построите CP — фазу cos — вы получите фазу 0,3142 в ячейках, соответствующих частоте сигнала cos, и нули в других местах. Это пи/10. Я ожидаю получить пи. Почему это?
Если вы нанесете SP, вы получите значения 1,2566. Я ожидаю получить пи/2 или 1,5708. 80% от ожидаемого значения. Что вызывает эти ошибки?