В настоящее время я пытаюсь использовать библиотеку ARM CMSIS DSP на моем чипе cortex m3 PSoC 5lp.
Я столкнулся с некоторыми проблемами при использовании некоторых функций, и у меня есть вопрос об использовании функций 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 или это 512 из 1024 отсчетов БПФ? После получения БПФ я делаю
arm_cmplx_mag_q15(ADC_samples, MAG_of_fft, fftlength);
где fftlength
равно 1024.
Это возвращает MAG_of_fft
, и когда я рисую его, действительно кажется, что это форма, которую я ожидал увидеть, но я не знаю точно, как интерпретировать результаты, поскольку я не знаю, какова точная длина моего БПФ. Я говорю, что делаю БПФ 1024pt, но, похоже, возвращает только БПФ 512pt, или только половину БПФ 1024pt, то или другое.
Так я правильно понимаю? Это означает, что массив ADC_samples
должен быть в два раза длиннее, чем данные в нем, чтобы я мог получить БПФ 1024 pt? а затем я могу вычислить величину БПФ, используя этот массив 2048, сообщив ему, что длина БПФ равна 1024?
Может ли кто-нибудь объяснить мне, как правильно интерпретировать эти функции и какой длины БПФ мне следует ожидать?