БПФ в реальном времени с высоким разрешением и минимальной задержкой - PullRequest
4 голосов
/ 25 июля 2011

Я прочитал все статьи Википедии и статьи stackoverflow по fft и резолюции. Тем не менее, ничто не помогло узнать, как получить частоту высокого разрешения без огромных задержек.

Если я правильно понимаю обработку сигналов:

У меня частота дискретизации 44,100, и я беру 256 блоков. Тогда разрешение по частоте будет составлять 44 100/2/256 = 86,1 Гц на частотный интервал с БПФ.

Постоянно я вижу примеры типа http://www.tunelab -world.com / и http://www.spectraplus.com/, которые способны определять частоту до 0,01 Гц.

Если бы я сделал это с помощью описанного выше метода, мне потребовалось бы 4410 000 ячеек для получения такого разрешения. При частоте дискретизации 44 100 для заполнения данных с входа потребуется 100 секунд.

Я знаю, что что-то упустил, но не могу понять, что.

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

Заранее спасибо за помощь!

Ответы [ 3 ]

3 голосов
/ 25 июля 2011

Если вам нужен выход FFT с высокочастотным разрешением, вам нужно выполнить FFT для многих сэмплов: просто невозможно обойти это.

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

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

2 голосов
/ 25 июля 2011

Причина, по которой вы можете добиться большей точности, состоит в том, что проблема оценки частоты может быть решена с большей точностью, чем многие другие проблемы оценки.

Нижняя граница Крамера-Рао (CRLB) по точности равна , заданной :

enter image description here

, что означает, что дисперсия оценки частоты (мера ожидаемой ошибки) уменьшается как куб T , длительности измерений. В «нормальных» проблемах оценки эта мера имеет тенденцию уменьшаться до квадрата T .

Использование максимизатора БПФ (корзина с наибольшим пиком) даст вам только квадрат T .

Как говорит Адриан Тейлор, приведенные вами примеры, вероятно, начинаются с большего количества выборок, а затем обновляются с более короткой продолжительностью.

Для ударов здесь есть некоторые алгоритмы оценки частоты , которые могут представлять интерес. Они быстрее, чем БПФ, и точнее.

1 голос
/ 25 июля 2011

SpectraPlus сообщает: «Анализ БПФ с высоким разрешением до 1 048 576 точек»;это не даст вам разрешение 0,01 Гц при 44,1 кГц.

Кажется, что TuneLab снижается до 0,01 цента, но «дисплей спектра» имеет разрешение около 2,5 Гц при 440 Гц.«Дисплей фазы» не является чем-то особенным.

Что вы пытаетесь сделать?Если вы просто хотите реализовать гитарный тюнер, вам не нужен (и, вероятно, не нужен) БПФ.Не зная ничего лучшего, я бы пошел на PLL.

...