С какой точностью можно определить частоту?

ivan219
Сообщения: 61
Зарегистрирован: 09 май 2011, 16:39

Re: С какой точностью можно определить частоту?

Сообщение ivan219 »

Santik
Не знаю как посчитать ту точность на которую способен этот алгоритм с определённым С/Ш.
Но знаю что при входном комплексном сигнале где С/Ш стремится к бесконечности ошибка стремится к 0 вне зависимости от размера блока.
Вложения
2.gif
1.gif

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: С какой точностью можно определить частоту?

Сообщение Santik »

ivan219 писал(а):Не знаю как посчитать ту точность на которую способен этот алгоритм с определённым С/Ш.
Но знаю что при входном комплексном сигнале где С/Ш стремится к бесконечности ошибка стремится к 0 вне зависимости от размера блока.
Как учил нас Pavia:
Берёте сигнал берёте метод и моделируете сигнал с возможными искажениями и смотрите какую точность даёт ваш метод. Вот и всё.
А вот где Вы взяли такой хороший сигнал
где С/Ш стремится к бесконечности
???
У Вас разрядность стремится к бесконечности? Или время наблюдения сигнала?
Надо быть реалистами - время наблюдения и разрядность всегда ограничены.
Следствие - шумы всегда существуют.

Rem
Сообщения: 34
Зарегистрирован: 13 май 2014, 20:20

Re: С какой точностью можно определить частоту?

Сообщение Rem »

Здравствуйте. Подключусь к обсуждению.
Я пришел из музыки. Задача ставится немного по другому: "Как за минимально возможное время определить частоту (ноту)?". Как это реализовано в профессиональных программах я не знаю, но сам нашел два пути.
1. Захватить побольше семплов для фурье, чтоб добиться точности, затем найти вершину параболы, построенной по трём самым большим значениям частот. В итоге получился простой тюнер для гитары - http://www.youtube.com/watch?v=lvkBEK7MKHM
2. Захватывать поменьше, скорость будет быстрее, точность будет хуже, но любой звук приравниваем к ближайшей идеальной ноте. Это понадобится для быстрого реагирования игрушек. Например http://www.youtube.com/watch?v=HsVs9Chd7KQ

Обратил внимание на вложения двумя постами выше. Это от куда взято и как называется? На вид это как раз то, что я долго искал. Как по трём точкам найти вершину кривой (частоту и её мощность спектре)
В музыке точность определяется в музыкальных центах. Разницу около 2..3 центов человеческое ухо уже не отличит. Опытные музыканты запросто доходят до 10, а дальше сложнее. Слишком звуки одинаковые получаются.

ivan219
Сообщения: 61
Зарегистрирован: 09 май 2011, 16:39

Re: С какой точностью можно определить частоту?

Сообщение ivan219 »

Если известны частоты то вы можете воспользоваться Герцелем в этом случае вы получите максимум точности. Правда с потерей производительности. Но для ПК и такого приложения это не критично.

Rem
Сообщения: 34
Зарегистрирован: 13 май 2014, 20:20

Re: С какой точностью можно определить частоту?

Сообщение Rem »

На Герцеля я смотрел, но как понял для поиска одной из 40 нот нужно проанализировать 40 раз. И для тюнера например это совсем не подходит. Сильно не углублялся.

Rem
Сообщения: 34
Зарегистрирован: 13 май 2014, 20:20

Re: С какой точностью можно определить частоту?

Сообщение Rem »

Ну теперь можно плотно заняться этим вопросом. В соседних темах я разбирал как генерировать синусоиду любой частоты, как фильтровать реальный звук, какие есть оконные функции. Сейчас можно изучать точность анализатора.
Предварительно. Попробую сгенерить 440 гц, 2048 семлов, на 44100. Потом последовательно применить разные окна и после каждого FFT вывести несколько значений, около максимального. И будем думать, как из этих отсчётов найти точную частоту, и на сколько она будет отличаться от 440. Ну а потом на вход подавать другие сгенеренные синусоиды и проверять отклонения.
Если у кого есть алгоритмы, кидайте, посмотрим.

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: С какой точностью можно определить частоту?

Сообщение Santik »

А почему 440 Гц? Надо взять заранее "самый плохой случай" 55 Гц! Добавить в сигнал шумов, гармоник (обязательно!)... "Кидать алгоритмы" вряд ли кто согласится - и это логично (потому что все они уже давно известны). Я уже своё мнение высказывал - единственный путь - грубо определить частоту (основную) используя FFT и уточнить её значение по 10 гармонике.

Ответить