小智 29
@thongcaoloi,
关于输入数据维数的简单答案是:您需要一维数据.现在我将解释这意味着什么.
因为您想要分析音频数据,您对离散傅立叶变换(DFT或FFT)的输入是一维实数序列,表示音频信号随时间变化的电压,您的音频文件是数字的表示随时间变化的电压.
您的音频文件是通过以固定采样率(也称为采样频率)对连续音频信号的电压进行采样而产生的,对于CD质量音频,通常为44.1 KHz.
但是您的数据文件可能以更低的频率进行采样,因此在对该数据进行FFT之前,请尝试找出数据的采样频率.
所以现在你必须从你的音频文件中提取单个样本.如果您的文件是立体声,它将有两个单独的采样序列,一个用于右声道,一个用于左声道.如果文件是单声道,则它只有一个样本序列.
如果您的文件是立体声或任何其他多声道音频格式(如5.1或7.1),您可以单独对每个通道进行FFT,或者您可以使用电压添加将任意数量的通道组合在一起.这取决于你,取决于你想要对FFT结果做些什么.
DFT或FFT的输出是一系列复数.每个复数是由实部和虚部组成的对,通常显示为一对(re,im).
如果你想绘制音频文件的功率谱密度,这是大多数人想要的FFT,你将使用第一个N/2绘制20*log10(sqrt(re ^ 2 + im ^ 2))的图形FFT输出的复数,其中N是FFT的输入采样数.
您可以尝试构建自己的频谱分析仪软件程序,但我建议使用已经构建和测试过的东西.
这两个FFT频谱分析仪可立即给出结果,并具有内置的IFFT合成功能,这意味着您可以对频域频谱数据进行傅里叶变换,以在时域中重建原始信号.
http://www.mathworks.com/help/techdoc/ref/fft.html
http://www.sooeet.com/math/fft.php
这个主题还有很多内容,对于一般的数字信号处理主题,但是这个简短的介绍,应该让你开始.