音频样本的FFT处理
FFT processing of audio sample
我是音频处理的新手,有数学背景,所以我对用fft处理提取样本的问题很少(很多,但对初学者来说很少)。
我正在使用来自的fft实现http://www.drdobbs.com/cpp/a-simple-and-efficient-fft-implementatio/199702312?pgno=1具有固定的阵列长度。
我有一组样本(比如说1024个样本)。
Fft算法采用输入复数值(实数和虚数),虚数被设置为0,因为我没有任何,并且从它的虚数部分剥离Fft输出。
我还有下一个问题:
1) 我认为样本是实数的假设正确吗?
2) 是否有只对实数有效的FFT实现数字?我的意思是,在计算中根本没有想象的部分。
3) 如果我继续使用所描述的过程,如果fft的输入中没有虚数据(全零),那么fft输出的虚部对于所有值也将为零,这是正确的假设吗?
PS若问题已经存在,我很抱歉,但我并没有找到任何令人满意的答案。
1) 我认为样本是实数的假设正确吗?
是的。
2) 是否有只对实数有效的FFT实现?我的意思是,在计算中根本没有想象的部分。
如果有的话,它仍然需要在计算中使用虚数。(当然,它可以用成对的实数进行复杂的数学运算,只需将第二个数字标记为非"虚"的数字,但这有什么好处?)
3) 如果我继续使用所描述的过程,如果fft的输入中没有虚数据(全零),那么fft输出的虚部对于所有值也将为零,这是正确的假设吗?
这是不对的。
FFT输出中每个数字的绝对值与信号中每个频率的幅度成比例。
信号中每个频率的相位也在输出中编码,作为复数的argument。也就是说,如果某个频率与正弦波异相90度,那么该bin的自变量将为90度——也就是说实部将为0,虚部将具有振幅!对于不是90度倍数的相位,实部和虚部都将为非零。
如果不关心相位信息,可以取每个输出数的绝对值,即sqrt(real*real + imag*imag)
。
- 警告处理为错误这里有什么问题
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 处理多个异常集合的C++方法
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 使用流处理接收到的数据
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 基于多个条件处理地图中的所有元素
- 如何用数字处理log(0)
- SSL上的`curl_easy_send`和`curl_asy_recv`:如何处理`CURLE_AGAIN`
- 错误处理.将系统错误代码映射到泛型
- 从文本文件中读取时钟时间和事件时间并进行处理
- 在运行时处理类型擦除的数据-如何不重新发明轮子
- 在for循环中使用auto vs decltype(vec.size())来处理字符串的向量
- 多 GPU 批处理 1D FFT:似乎只有一个 GPU 可以工作
- C++ 是使用 OpenAL 进行实时 PCM fft 音频处理
- 音频样本的FFT处理
- 实时绘图的信号处理数据(c++中的FFT和GNUPLOT)
- 音频处理C++ - FFT
- 信号处理-计算FFT和IFFT用FFTW库c++