ste*_*iss 73 algorithm math audio signal-processing fft
我们遇到的所有FFT实现都会产生复杂的值(具有实部和虚部),即使算法的输入是一组离散的实数(整数).
是否仅可以用实数表示频域?
zmc*_*ord 77
FFT基本上是基础的变化.FFT改变原始信号的基础是一组正弦波.为了使该基础描述所有可能的输入,它需要能够表示相位和幅度; 相位用复数表示.
例如,假设您对仅包含单个正弦波的信号进行FFT.根据相位,您可能会获得完全真实的FFT结果.但是如果你将输入的相位移动几度,那么FFT输出怎么能代表那个输入呢?
编辑:这是一个有点松散的解释,但我只是想激发直觉.
小智 47
FFT为您提供幅度和相位.幅度被编码为复数的幅度(sqrt(x ^ 2 + y ^ 2)),而相位被编码为角度(atan2(y,x)).为了从FFT获得严格的实际结果,输入信号必须具有偶对称性(即x [n] = conj(x [Nn])).
如果您关心的只是强度,那么复数的大小就足以进行分析.
hot*_*aw2 37
是的,可以仅使用实数来表示严格实际输入的FFT频域结果.
FFT结果中的那些复数只是2个实数,这两个实数都需要给出具有长度和方向角(或幅度和相位)的结果向量的2D坐标.并且FFT结果中的每个频率分量可以具有唯一的幅度和唯一的相位(相对于FFT孔径中的某个点).
仅一个实数就不能代表幅度和相位.如果您丢弃相位信息,如果您尝试使用iFFT重新创建它(信号不对称),则可能会轻易地使信号失真.因此,完整的FFT结果需要每个FFT bin 2个实数.这两个实数通过常规约束在一些复杂数据类型的FFT中捆绑在一起,但FFT结果很容易(并且一些FFT)只产生2个实数向量(一个用于余弦坐标,一个用于正弦坐标).
还存在直接产生幅度和相位的FFT例程,但它们比产生复杂(或两个实际)矢量结果的FFT运行得慢.还有一些FFT例程只能计算幅度并且只是丢弃相位信息,但是它们通常运行速度不会比在更通用的FFT之后自己完成.也许他们以不可逆的代价为代码保存了几行代码.但是很多库都不愿意包含这些较慢且不那么通用的FFT形式,只需让编码器转换或忽略它们需要或不需要的东西.
此外,许多人认为参与是一个数学大量使用复杂的算法更优雅.
(已添加:)而且,作为另一种选择,您可以考虑每个FFT结果箱的两个组件,而不是实数和虚数组件,作为偶数和奇数组件,两者都是实数.
离散傅立叶变换基本上是从"时域"中的复数向量到"频域"中的复数向量的变换(我使用引号,因为如果你应用正确的缩放因子,DFT就是它自己的逆).如果您的输入是真实的,那么您可以一次执行两个DFT:获取输入向量x和y并计算F(x + i y).我忘记了你之后如何分离DFT,但我怀疑它是关于对称性和复共轭的东西.
的离散余弦变换排序的让你代表"频域"与实数,并且是常见的有损压缩算法(JPEG,MP3).令人惊讶的是(对我而言)即使它似乎丢弃了相位信息,它仍然有效,但这似乎也使得它对大多数信号处理目的没那么有用(我不知道一个简单的方法来进行卷积/相关DCT).
我可能错了一些细节;)
| 归档时间: |
|
| 查看次数: |
62682 次 |
| 最近记录: |