БПФ на WP7 показывает два зеркала - PullRequest
3 голосов
/ 24 февраля 2011

Hello Я изучаю возможности аудио на платформе WP7, и первая проблема, с которой я столкнулся, - это попытка реализовать БПФ с использованием метода Кули-Тьюки. В результате спектрограмма показывает 4 идентичных изображения в следующем порядке: одно нормальное, одно перевернутое, одно нормальное, одно перевернутое. Код был взят из другого проекта C # (для рабочего стола), реализация и все переменные, кажется, на месте с алгоритмом. Таким образом, я сразу вижу две проблемы: уменьшенное разрешение и потеря процессора для создания четырех идентичных спектрограмм. Учитывая размер выборки 1600 (может быть 2048), я знаю, что у меня есть только 512 полезных частотных данных, что оставляет мне разрешение 15 Гц для диапазона частот 8 кГц. Не плохо, но и не так хорошо.

Должен ли я просто отказаться от кода и использовать NAudio? У меня не может быть объяснения, почему спектр в четыре раза, входные данные в порядке, алгоритм, кажется, в порядке.

Ответы [ 2 ]

1 голос
/ 24 февраля 2011

Это звучит правильно. У вас есть 2 зеркала, я могу только предположить, что одно является действительной частью, а другое - частью изображения. Это стандартное БПФ.

Из реального и изображения вы можете вычислить величину или амплитуду каждой гармоники, которая является более распространенной, или вычислить угол или сдвиг фазы каждой гармоники, которая является менее распространенной.

Гилад.

0 голосов
/ 26 февраля 2011

Я переключился на NAudio и теперь БПФ работает.Однако я мог бы найти причину (я, вероятно, не буду пытаться проверить снова): когда я создавал массив double для подачи в функцию FFT, я сделал что-то вроде:

            for (int i = 0; i < buffer.Length; i+= sizeof(short))
            {
                samples[i] = ReadSample(buffer, i);
            }

Для справки'samples' - это двойной ввод [] для fft, ReadSample - это то, что заботится о маленьких / больших порядковых числах.Сейчас я не могу вспомнить, как был написан код, но он пропускал все странные примеры.

Мои знания по математике никогда не были хорошими, но я думаю, что это вызывает некоторые шаблоны наложения, которые в конечном итоге могут привести к эффектуЯ испытал.

В любом случае, проблема обошлась, но спасибо за ваш вклад, и если вы все еще можете объяснить явление, я благодарен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...