我目前正在尝试在我的cortex m3 PSoC 5lp芯片上使用ARM CMSIS DSP库。
我遇到了一些使用某些功能的问题,我对使用函数arm_cfft_q15
(或任何arm_cfft_***
函数)有疑问。ARM CMSIS DSP fft功能的正确FFT长度
说我有
q15_t ADC_samples[1024];
q15_t MAG_of_fft[1024];
,我跑
arm_cfft_q15(1024pt_fft, ADC_samples, sample_length);
这样做的变换 '到位'。现在正因为如此,由于FFT返回了实数值和虚数值,实际上它只能返回 长度为fft的512或1024个FFT采样中的512个? 获得FFT后,我做
arm_cmplx_mag_q15(ADC_samples, MAG_of_fft, fftlength);
其中fftlength
是1024
这将返回MAG_of_fft
,当我绘制它,它确实似乎是,我期待看到形状,但我不因为我不知道FFT的确切时间,所以知道如何解释结果。我告诉它我正在做一个1024pt FFT,但它似乎只返回一个512pt FFT,或者只有一个1024pt FFT的一半,其中一个或另一个。
那么我是否正确?这意味着ADC_samples
数组必须是其中数据的两倍,才能获得1024点FFT?然后我可以通过告诉它FFT的长度是1024来计算使用该2048阵列的FFT的大小?
有人可以向我解释如何正确解释这些函数和我应该期望什么长度的FFT?
请注意,我故意避免通过过多地使用'arm_rfft'来避免复杂化,这似乎不是您问题的对象(如果需要,我可以在单独的问题中详细说明)。 – SleuthEye
好的,我认为这清除了我对数组输入函数大小的困惑。我还会研究arm_rfft家族,如果我有任何疑问,我肯定会问他们。谢谢。 – scarlso9