1
- 使用Apple文档中的FFT示例代码时,实际上N,log2n,n和nOver2是什么意思?
- N是指fft的窗口大小还是给定音频中样本的整个数量,并且如何从音频文件中计算N?
- 它们与音频采样率(即44.1kHz)有什么关系?
- 这段代码中的FFT帧大小是多少?
/* Set the size of FFT. */
log2n = N;
n = 1 << log2n;
stride = 1;
nOver2 = n/2;
printf("1D real FFT of length log2 (%d) = %d\n\n", n, log2n);
/* Allocate memory for the input operands and check its availability,
* use the vector version to get 16-byte alignment. */
A.realp = (float *) malloc(nOver2 * sizeof(float));
A.imagp = (float *) malloc(nOver2 * sizeof(float));
originalReal = (float *) malloc(n * sizeof(float));
obtainedReal = (float *) malloc(n * sizeof(float));
考虑到有问题的代码包含'log2n = N',在这种情况下'log2N'似乎不是'N'的对数。 – 2013-03-20 17:24:00
@EricPostpischil:看看下一行:移位N对应于2的幂,即N是n的双对数。 – Matthias 2013-03-20 19:57:51
答案中的文字说“'N'是样本的数量”。在问题的代码中,'n'是样本的数量,但是'N'不是,'log2N'也不是'N'的对数,也不是'NOver2'的一半。我知道其他代码中的常见用法是'N'是样本的数量,但问题中的代码并非如此,这意味着此答案包含不正确的语句。 – 2013-03-20 20:00:59