我正在测试一个正弦信号和一个余弦信号的 fft 的相位输出。下面的脚本创建信号并对它们执行 FFT。幅度低于阈值的 bin 将相位谱归零,因为我只对信号的相位感兴趣。
% 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 的相位 - 您将在与 cos 信号频率相对应的 bin 中获得 0.3142 的相位,而在其他地方则为零。这是 pi/10。我期待得到pi。为什么是这样?
如果你绘制 SP,你会得到 1.2566 的值。我期待得到 pi/2 或 1.5708。预期值的 80%。是什么导致了这些错误?