我目前正在尝试在我的 cortex m3 PSoC 5lp 芯片上使用 ARM CMSIS DSP 库。
我在使用某些功能时遇到了一些问题,并且我对使用这些功能arm_cfft_q15
(或任何arm_cfft_***
功能)有疑问。
说我有
q15_t ADC_samples[1024];
q15_t MAG_of_fft[1024];
我跑
arm_cfft_q15(1024pt_fft, ADC_samples, sample_length);
这会“就地”进行转换。现在正因为如此,由于 FFT 同时返回实数值和虚数值,它实际上只能返回长度为 512 的 fft,还是 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 pt FFT?然后我可以通过告诉它 FFT 的长度是 1024 来计算使用该 2048 数组的 FFT 的大小?
有人可以向我解释如何正确解释这些函数以及我应该期望的 FFT 长度吗?