在fft matlab中计算相位角

时间:2017-08-11 01:25:12

标签: matlab fft atan2

我正在尝试计算由我在Matlab的工作空间中构建的合成信号的傅里叶谱的第二分量的频域(在计算fft之后)的相位角。我确信相位等于0(正如你在代码中看到的那样),但我得到的结果是pi / 2。代码如下:

t = 0:pi / 128:(2 * pi - pi / 128);
V = sin(t);
L = length(V);
n = 2^nextpow2(L);
Y = fft(V, n);
threshold = max(abs(Y))/10000;
Y(abs(Y)<threshold) = 0;
mag = abs(Y/n);
angle = rad2deg(atan2(imag(Y),real(Y)));

我看不出错误在哪里。

1 个答案:

答案 0 :(得分:1)

你误以为频率对应于bin中心频率(没有相位偏移)的实际,周期性正弦波的相位为零。表示原始序列的 real 部分的基函数是余弦函数。

要用余弦波表示正弦波,必须减去pi / 2的相位偏移:

sin(x)= cos(x - pi / 2)。

因此,bin 2中的相位(对应于原始序列的频率)是-pi / 2.

(有关更详尽的说明,请参阅this question on DSP.SE。)