Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 非对数2的快速傅里叶变换_Java_Signal Processing_Fft - Fatal编程技术网

Java 非对数2的快速傅里叶变换

Java 非对数2的快速傅里叶变换,java,signal-processing,fft,Java,Signal Processing,Fft,我想用Java实现用于和弦识别的快速傅立叶变换,但我真的不明白。它说样本数应该是2的幂,那么对于样本数不等于2的幂的歌曲,我们应该怎么做呢?另外,我还想了解STFT。通常情况下,您所做的只是用零填充数据,使其成为二的幂。通常情况下,您所做的只是用零填充数据,使其成为二的幂。您通常会在整个文件中生成一个滑动窗口。选择窗口的大小是为了给出一个合理的时间段,在该时间段内,声音的特征不会发生很大变化。通常,一个窗口可能在10毫秒左右,因此,例如,如果采样率为44.1kHz,则可以使用窗口大小N=512,

我想用Java实现用于和弦识别的快速傅立叶变换,但我真的不明白。它说样本数应该是2的幂,那么对于样本数不等于2的幂的歌曲,我们应该怎么做呢?另外,我还想了解STFT。

通常情况下,您所做的只是用零填充数据,使其成为二的幂。

通常情况下,您所做的只是用零填充数据,使其成为二的幂。

您通常会在整个文件中生成一个滑动窗口。选择窗口的大小是为了给出一个合理的时间段,在该时间段内,声音的特征不会发生很大变化。通常,一个窗口可能在10毫秒左右,因此,例如,如果采样率为44.1kHz,则可以使用窗口大小N=512,以便获得所需的持续时间和大小为2的功率。然后,通过文件获取大小为N的连续块样本,并为每个N点块生成FFT。(注意:在大多数情况下,为了获得功率谱的估计值,您实际上需要FFT输出的幅度。)为了提高分辨率,块可以重叠,例如50%,但这当然会增加处理负载。最终的结果是一系列短期频谱,因此实际上你有一个3D矩阵(振幅-频率-时间),它在频域中描述声音的内容。

你通常会在整个文件的滑动窗口上生成一个。选择窗口的大小是为了给出一个合理的时间段,在该时间段内,声音的特征不会发生很大变化。通常,一个窗口可能在10毫秒左右,因此,例如,如果采样率为44.1kHz,则可以使用窗口大小N=512,以便获得所需的持续时间和大小为2的功率。然后,通过文件获取大小为N的连续块样本,并为每个N点块生成FFT。(注意:在大多数情况下,为了获得功率谱的估计值,您实际上需要FFT输出的幅度。)为了提高分辨率,块可以重叠,例如50%,但这当然会增加处理负载。最终的结果是一系列短期频谱,因此实际上你有一个3D矩阵(振幅-频率-时间),它在频域中描述声音的内容