【问题标题】:Matlab FFT vs fvtool phase responseMatlab FFT 与 fvtool 相位响应
【发布时间】:2014-10-09 14:11:46
【问题描述】:

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

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

对于fft,我只是在fft() 之后使用angle() 并绘制它与频率的关系(与幅度响应相同的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 个点的分析参数设置不会产生相同的相位结果。幅度结果看起来相似,但略有不同。

提前感谢您的帮助。

【问题讨论】:

  • 如果没有看到一个例子就很难明确地说出来,但我怀疑差异是由于fvtool 使用了 unwrapped 阶段。要手动获得类似的效果,您应该绘制unwrap(phase)
  • @OliCharlesworth 感谢您的回复,澄清一下,我的示例是设置 x =(我发布的值数组),并对其执行 fft(),但是当我执行 fvtool( x),显示的相位响应非常不同,所以我不明白两者之间的区别。此外,我确实对 fft() 的相位进行了 wrap(),我提到的差异来自 fvtool 更陡峭且相位低一个数量级的斜率

标签: matlab fft phase


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    • 2013-02-24
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多