【问题标题】:Rebuilding original signal from frequencies, amplitude, and phase obtained after doing an fft根据 fft 后获得的频率、幅度和相位重建原始信号
【发布时间】:2011-09-06 16:33:45
【问题描述】:

根据 fft 后获得的频率、幅度和相位重建原始信号。

问候

我正在尝试根据对信号进行 fft 后获得的频率、幅度和相位来重建信号,但是当我尝试将 fft 数据(频率、幅度和相位)组合回来以查看是否我得到一个类似的信号,模式有点偏离。我认为它有 与我的公式有关,这可能有点不正确。

我用来组合数据的公式是:

amplitude*sin(2*pi*time*frequency+phase)+amplitude*cos(2*pi*time*frequency+phase);

请注意: 目前我不想使用 IFFT,因为我将在计算完成之前编辑幅度和频率

情节的图像如下。顶部是原始信号,底部是使用方程式创建的信号。如果您想知道我正在使用 matlab,但我认为问题出在方程式上。

tia

【问题讨论】:

  • 你能解释一下吗?这个方程只会给出一个正弦波,但你显然在这里有更复杂的事情发生。您是否有一系列 FFT 以使幅度、频率和相位不断变化?
  • @AAT 幅度、频率等可能是矩阵
  • @tstenner - 好电话,很可能是这样 - 也许 Rick 会确认。
  • 你至少试过 ifft 看看你得到了什么(与你的日常生活相比)?
  • @AAT 是的,幅度、频率和相位是矩阵。

标签: matlab fft equation-solving


【解决方案1】:

我不明白你为什么要在等式中同时使用 sin 和 cos 项:应该这样做......

amplitude*sin(2*pi*time*frequency+phase);

同时使用正弦和余弦项会导致缩放问题和相移,除非 FFT 有什么奇怪的地方。但是我不知道这是否可以解释您所看到的失真。这可能与您使用的 FFT 块大小有关。

【讨论】:

  • 其实他可能只想要cos
  • @Oli 所需要的就是将其从 sin 更改为 cos,谢谢...看来它总是很简单的东西 :-)
  • @Rick -- 很高兴听到这个消息。 @Oli - 好电话,我永远从 sin() 开始,然后意识到 cos() 就是我想要的!
  • 所需要的只是将其从 sin 更改为 cos 感谢幅值cos(2*pitime*frequency+phase)
【解决方案2】:

IFFT 是以下转换的有效实现:

       N-1
x[n] = SUM X[k] exp(j*2*pi*n*k/N)
       k=0

X[k] 是您的 FFT 结果(复数 幅度),x[n] 是您的时域样本。对于纯实数输入,可以用cossin(或用cosphase 术语)重写,但通常更容易坚持复杂的表示。

[这可以高度矢量化,但我会留给你!]

【讨论】:

  • 从技术上讲,它根本没有这样做。但它会产生与此相同的结果。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-05
  • 2015-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多