我想使用portaudio和fftwpp分析从麦克风端口获得的信号。为此,我遵循了here提供的解释。我现在的问题是:
这里声明我应该从传入的数据中分出一个窗口。我的数据已经被分块了,在我只记录了很短的一段时间后,然后对其进行处理。因此,我假设一个矩形窗口已经应用于我的数据。对吗?
现在我得到了200k个数据点,我是否应该直接将它们放入一个数组中:
Array::array1<Complex> F(np,align);
Array::array1<double> f(n,align); // For out-of-place transforms
// array1<double> f(2*np,(double *) F()); // For in-place transforms
fftwpp::rcfft1d Forward(n,f,F);
fftwpp::crfft1d Backward(n,F,f);
qDebug() << "Putting " << numSamples << " into an array!";
for(int i = 0; i < numSamples; i++)
f[i] = this->data.recordedSamples[i];或者我应该把他们分开?如果我把它们都放在一个数组中,我能得到什么分辨率呢?我的采样率设置为44.1 kHz。
发布于 2016-02-29 22:19:00
因此,我假设一个矩形窗口已经应用于我的数据。对吗?
在某种程度上,窗口通常用于滤除由于信号的突然开/关状态引起的高频失真,或者减少或重新排序频谱泄漏(https://en.wikipedia.org/wiki/Spectral_leakage)
如果要可视化fft,建议应用窗口,尤其是(非矩形)窗口。有关选项,请参见https://en.wikipedia.org/wiki/Window_function#Hann_.28Hanning.29_window。
请注意,您要在fft之前应用窗口。
还是我应该拆分它们?
嗯,这取决于你的要求。但一般来说,由于窗口的原因,采样时间越长,FFT在这段时间内的精度就越高,尽管这种技术并不少见,但这是最好的。
那么我应该得到哪种分辨率?
分辨率是采样率除以样本计数。
https://stackoverflow.com/questions/35701407
复制相似问题