Я хотел бы использовать STFT для анализа нескольких точек. Я понимаю, что обнаружение партиалов, существующих в сигнале, - это только начало. Тем не менее у меня есть проблемы с этим.
Допустим, у меня есть сигнал с частотой «CD» 44100Hz
. С окном 1024
сэмплов я получаю разрешение бина 22500Hz/512=43Hz
. Этого достаточно только, чтобы различить высокие фортепианные ноты, такие как:
C5 = 523.251Hz
и C#5 = 554.365
.
Раньше я думал, что 1024
это довольно большое окно. Но, может быть, это не так, и обычно большие окна используются для обнаружения частичек?
Можно ли увеличить разрешение по частоте каким-либо другим способом, кроме увеличения размера окна, что ухудшает временное разрешение? Я думал о двух методах:
Method1:
- Разделите сигнал на полосы частот с помощью полосовых фильтров (например,
0-11.25Hz
и11.25-22.5Hz
). - Уменьшите верхние полосы частот, чтобы исходные высокие частоты теперь были низкими частотами (сделайте это для второй полосы
11.25-22.5Hz -> 0Hz-22.5Hz
) - не уверен, что это возможно. - Конкретные результирующие наборы с установленными метками.
Method2:
- Используйте серию фильтров нижних частот с возрастающим пределом.
- Выполните БПФ на растущих частотных диапазонах.
- Для каждой частоты используйте наилучшее возможное разрешение (ячейки из первого FFT, в который была включена эта частота).
- Это приведет к тому, что низкие частоты получат лучшее разрешение, но я думаю, что это нормально, потому что для более высоких нот разность частот больше.
Буду благодарен любым замечаниям по этому вопросу.
Я также читал здесь: Как размер окна, частота дискретизации влияют на оценку шага БПФ? о методике улучшения результатов отбора пиков. Думаю попробую его использовать.
Ответы:
Если вы действительно настаиваете на использовании БПФ (а не параметрических методов, которые не пострадают от компромиссов между временем и частотой), вы можете подделать намного лучшее разрешение, используя информацию о фазе для восстановления мгновенной частоты для каждого бина БПФ. Частицы могут быть затем обнаружены путем поиска плато в функции, дающей мгновенную частоту как функцию индекса бункера FFT. Обычная реализация этой методики, описанная в этой статье, будет «стоить» вам одного дополнительного STFT (мгновенная частота восстанавливается операциями над STFT сигнала и STFT производной сигнала).
См., Например, функцию ifgram в этой реализации Matlab синусоидального моделирования звуковых сигналов.
Обратите внимание, что это не поможет разрешить две части, попадающие в соседние ячейки FFT. Это просто обеспечит гораздо более точную оценку частоты, чем просто преобразование в частоту индекса FFT бина спектрального пика.
источник
Термин «разрешение» имеет несколько значений. Как правило, вы не можете увеличить свою способность разделять (или «разрешать») близко расположенные спектральные пики путем интерполяции с использованием данных с одинаковой длиной окна. Но вы можете оценить частоту изолированных стационарных спектральных пиков, которые значительно выше минимального уровня шума с более высоким разрешением (иногда намного более высоким разрешением), чем расстояние между бинами FFT, различными методами интерполяции.
Общие методы интерполяции результатов FFT для оценок с более высоким разрешением включают в себя параболическую интерполяцию, интерполяцию Sinc, заполнение нулями данных в гораздо более длинное FFT и методы фазового вокодера с использованием (слегка) перекрывающихся окон смещения.
FFT - это, по сути, группа полосовых фильтров, каждый с очень крутым переходом, но тоннами пульсаций в полосе задерживания для данной длины ядра FIR-фильтра. Как таковые, эти фильтры не имеют большого подавления шума непериодического шума в окне. Если вы подозреваете, что этот тип помех является проблемой, тогда оконное БПФ или пользовательский набор фильтров могут работать лучше.
источник
После дальнейшего исследования, вызванного вопросом Джима Клэя и ответом на вопрос о пикенетах в комментариях, я обнаружил, что мой Method2 заново изобретен Ограниченное Q-преобразование, описанное, например, Кашимой и Мон-Рейно (я не уверен, что могу ссылаться на эту статью, файл выглядит разорванным ) ,
Их подход алгоритмически более эффективен, поскольку они начинают с самого большого частотного диапазона и итеративно уменьшают его на 2, пока не достигнут самой низкой октавы.
Преимущества Q-преобразования были изучены Брауном, например , здесь . Он может быть не таким эффективным, как одиночное БПФ, но имеет преимущество в том, что не рассчитывает толстое БПФ на высокочастотных диапазонах, которые этого не требуют.
Спасибо за все ответы, комментарии и ссылки.
источник
Если вы сохраняете «историю» входных данных и используете ее для наложения ваших ДПФ, то это даст дополнительную информацию для извлечения спектрального контента. Конечно, это зависит от изменяющегося во времени характера вашего сигнала. По форме он будет похож на функцию распределения вероятностей.
Это дало бы вам ДПФ, которые расположены ближе во времени. Однако это все равно увеличило бы временную неопределенность каждого ДПФ, которая ограничена законами природы: точное значение временного и спектрального поведения не может быть определено одновременно.
Если частотный контент не сильно меняется в пределах окна, то все должно быть хорошо.
источник