Удаление зашумленных результатов Cepstrum

Я работал над простой настройкой определения частоты на iphone. Анализ в частотной области с использованием результатов БПФ был несколько ненадежным при наличии гармоник. Я надеялся использовать результаты Cepstrum, чтобы помочь решить, какая основная частота воспроизводится.

Я работаю с AudioQueues в структуре AudioToolbox и выполняю преобразования Фурье, используя структуру Accelerate.

Мой процесс был в точности тем, что указано в статье Wikipedia Cepstrum для Real Power Cepstrum, а именно: сигнал → FT → abs () → квадрат → журнал → FT → abs () → квадрат → мощный кепстр.

Проблема у меня в том, что результаты Cepstrum очень шумные. Мне нужно отбросить первые и последние 20 значений, поскольку они астрономические по сравнению с другими значениями. Даже после «очистки» данных остается огромное количество вариаций - намного больше, чем я ожидал, учитывая первый график. См. Изображения ниже для визуализации частотной области и области запроса. FFT FFT Cepstrum Cepstrum

Когда я вижу такого явного победителя в частотной области, как на этом графике, я ожидаю увидеть такой же четкий результат в области запросов. Я играл в A440 и ожидал, что bin 82 или около того будет иметь наибольшую величину. Третий пик на графике представляет собой контейнер 79, который находится достаточно близко. Как я уже сказал, первые 20 или около того бункеров настолько астрономические по величине, что их невозможно использовать, и мне пришлось удалить их из набора данных, чтобы что-нибудь увидеть. Еще одно странное качество данных кепстра состоит в том, что четные ячейки кажутся намного выше, чем нечетные ячейки. Вот диапазоны частот из 77-86:

77: 151150.0313
78:  22385.92773
79: 298753.1875
80:  56532.72656
81: 114177.4766
82:  31222.88281
83:   4620.785156
84:  13382.5332
85:     83.668259
86: 1205.023193

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

8
задан Brad Larson 12 March 2011 в 20:29
поделиться