вывод БПФ показывает неожиданную симметрию - PullRequest
0 голосов
/ 21 января 2019

Я запускаю CFFT по сигналу.Вывод, кажется, показывает симметрию.Я знаю, что fft является симметричным, но код

arm_cfft_f32(&arm_cfft_sR_f32_len512, &FFTBuf[0], 0, 1);
arm_cmplx_mag_f32(&FFTBuf[0], &FFTMagBuf[0], FFT_LEN);

учитывает это, поскольку FFTMagBuf равен половине длины входного массива.Вывод, тем не менее, по-прежнему показывает симметрию

[1] https://imgur.com/K0uMDAm

стрелки указывают на мой свисток, который хорошо показывает, окруженный большим количеством шума.средний, вероятно, гармонический (мой свист - дерьмо).но заметна левая и правая симметрия.

Я использую диско-плату stm32f4, и сэмплы взяты из встроенного микрофона mems и каждого блока сэмплов (в данном случае 1024, чтобы получить fft 512длина) передается через окно Hann.

Я использую измененную версию spectrogramui.py Тони Диколы для визуализации.

1 Ответ

0 голосов
/ 24 января 2019

Согласно документации arm_cmplx_mag_f32 вычисляет величину комплексного сигнала.Вот почему FFTMagBuf должен быть в два раза меньше FFTBuf: оба массива содержат действительные числа, но сложные выборки состоят из двух вещественных чисел.Это не связано с симметрией БПФ.

Итак, выходной сигнал имеет ровно столько же отсчетов, сколько и входной.

То есть вы вычисляете комплексное БПФ реального сигнала,которая имеет некоторую симметрию (вам также необходимо учитывать комплексное сопряжение), и вы берете величину, которая является симметричной.Конечно, тогда сюжет тоже симметричен.

...