0

我最近一直在使用fft()来查找我的数据的频率响应,并将其与fvtool. 我发现虽然幅度看起来相同,但相位看起来完全不同。

我想知道如何fvtool创建相位响应。

对于 fft,我只使用angle()afterfft()并将其与频率(与幅度响应相同的 X 轴)绘制。

对于fvtool,我尝试在分析参数中更改 FFT 的点数,但相位响应仍然不同。

例如,给定样本信号x(t),例如(32 个样本):

0.0627905195293134
0.125333233564304
0.187381314585725
0.248689887164855
0.309016994374947
0.368124552684678
0.425779291565073
0.481753674101715
0.535826794978997
0.587785252292473
0.637423989748690
0.684547105928689
0.728968627421412
0.770513242775789
0.809016994374948
0.844327925502015
0.876306680043864
0.904827052466020
0.929776485888251
0.951056516295154
0.968583161128631
0.982287250728689
0.992114701314478
0.998026728428272
1
0.998026728428272
0.992114701314478
0.982287250728689
0.968583161128631
0.951056516295154
0.929776485888252
0.904827052466020

使用:

angle = plot(samplingFrequency/2, angle(fft(x, 32)))

对比

fvtool(x)

为 32 个点设置分析参数不会产生相同的相位结果。幅度结果看起来相似,但略有不同。

预先感谢您的任何帮助。

4

1 回答 1

0

FFT 阶段必须展开才能有意义。否则会出现 2pi 的不连续性。在 matlab 中使用 unwarp() 函数

于 2021-07-30T20:18:10.743 回答