我有一个程序,绘制频谱分析(Amp/Freq)的信号,这是很好的DFT转换为极地。但是,这并不是像winamp(右上角)或者其他任何音频软件地块那样的图表。我不确定这种图形称为什么(如果它有一个独特的名字),所以我不知道该找什么。“Winamp风格”的频谱分析仪
我对频率轴是基础的两个指数,振幅轴困惑我虽然积极。
任何指针?
我有一个程序,绘制频谱分析(Amp/Freq)的信号,这是很好的DFT转换为极地。但是,这并不是像winamp(右上角)或者其他任何音频软件地块那样的图表。我不确定这种图形称为什么(如果它有一个独特的名字),所以我不知道该找什么。“Winamp风格”的频谱分析仪
我对频率轴是基础的两个指数,振幅轴困惑我虽然积极。
任何指针?
嗯,我不是100%确定你是什么意思,但肯定它只是从FFT中获取数据?
如果你想要得到的数据,你有(对于44KHz的文件),在22kHz的频率点,11KHZ 5.5Khz等,那么你可以使用一个小波分解,我猜...
此线可能帮你的有点...
Converting an FFT to a spectogram
相同的排序为频谱我猜信息...
要生成你需要做以下步骤功率谱:
10 * log10(re * re + im * im)
这给出了对数幅度(即dB为单位)与线性频率。
如果您还想要一个对数频率刻度,那么您将需要累积适当范围的分档的大小(并且您需要一个相当大的FFT开始)。
其实是一个有趣的问题。我知道你在说什么;频率轴当然是对数的。但是幅度呢?针对另一张海报,幅度不能简单地以dB为单位,因为dB没有零概念。这引入了量化误差,SNR和动态范围的思想。假设接收的数字化(即离散时间和离散振幅)时域信号x [n]等于s [n] + e [n],其中s [n]是发射的离散信号时间信号(即连续振幅)和e [n]是量化误差。假设x [n]用b位表示,为简单起见,取[0,1]中的值。那么e [n]的最大峰峰幅度是一个量化级别,即2^{ - b}。动态范围定义为以分贝为单位,20 log10(max-to-peak | s [n] |)/(max-to-peak | e [n] |)= 20 log10 1 /(2^{ - b})= 20b log10 2 = 6.02b dB。对于16位音频,动态范围为96 dB。对于8位音频,动态范围为48 dB。
那么Winamp如何绘制幅度呢?我的猜测:
最小振幅假设为-6.02b dB,最大振幅为0 dB。在视觉上,Winamp在考虑这些阈值时绘制窗口。
另一个非线性图,如log(1 + X)被使用。这个函数总是非负的,当X很大时,它近似于log(X)。
有没有其他专家知道?让我知道你的想法。我也很感兴趣,究竟是如何实现的。
你需要的是功率谱图。你必须计算你信号当前窗口的DFT。然后将每个值平方。
这可能是有趣的:http://stackoverflow.com/questions/2466196/normalize-fft-magnitude-to-imitate-wmp。 – mtrw 2010-03-26 05:02:52