реклама на сайте
подробности

 
 
> Определение периода сигнала, нужен простой алгоритм
ataradov
сообщение Aug 23 2010, 13:01
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



На картинке приведено несколько периодов колебания басовой струны гитары. Красным отмечен ожидаемый период. Необходимо определить частоту колебаний, но прямой подсчет дает в 2 раза завышенный результат, так как там полно гармоник, но на глаз период хоршо заметен. При этом амплитуда "внутреннего" колебания изменяется от полного пропадания, до равной и даже большей, чем "основного" колебания.

Нужен способ определить период, при этом сложные вычисления (типа FFT) не желательны, так как должно работать все на 8-бит микроконтроллере.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Alex11
сообщение Aug 23 2010, 15:28
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



Вы бы поиграли с модельками, тем более, что у Вас есть разные варианты записанного сигнала. Возможно, что Вам будет достаточно очень небольшого по буферу Фурье, чтобы определить основную частоту. Нужно только разойтись с гармониками, а дальше уточнить частоту по огибающей.
Go to the top of the page
 
+Quote Post
ataradov
сообщение Aug 23 2010, 15:51
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



QUOTE (Alex11 @ Aug 23 2010, 19:28) *
Вы бы поиграли с модельками, тем более, что у Вас есть разные варианты записанного сигнала. Возможно, что Вам будет достаточно очень небольшого по буферу Фурье, чтобы определить основную частоту. Нужно только разойтись с гармониками, а дальше уточнить частоту по огибающей.
Я и играюсь тут, просто коллективный разум хотел еще привлечь, иожет велосипед изобретаю.

Так же попробовал метод описанный в одном из блогов:
QUOTE
The solution I used is a pretty simple one. We set two thresholds (a positive and a negative one), and start counting when the signal value becomes higher than the positive threshold. We keep counting and wait for the signal to go below the negative threshold, then wait for it to go above the positive one again. This sometimes helps us count only the transitions we’re interested in.

Он дает правильное определение чаще чем обычный подсчет переходов через ноль, но все-равно ошибается, когда амплитуда "помехи" достаточно велика.

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

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

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Microwatt
сообщение Aug 23 2010, 16:06
Сообщение #4


Гуру
******

Группа: Почетный участник
Сообщений: 6 851
Регистрация: 25-08-08
Из: Запорожье
Пользователь №: 39 802



Цитата(Taradov Alexander @ Aug 23 2010, 18:51) *
Он дает правильное определение чаще чем обычный подсчет переходов через ноль, но все-равно ошибается, когда амплитуда "помехи" достаточно велика.

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

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

Вы привели картинки неполностью, неаккуратно наложенных колебаний. Форма их может несколько отличаться, но частота (период) одинаковы.
Возможно, я чего-то в Вашей формулировке не понимаю, но ни о каких "помехах" речь идти не должна. Период легко должен определяться через подсчет времени переходов через нуль. Вы как и чем пытаетесь измерять? Неужели по-эмбеддерски, с помощью АЦП?
Go to the top of the page
 
+Quote Post
ataradov
сообщение Aug 23 2010, 16:18
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



QUOTE (Microwatt @ Aug 23 2010, 20:06) *
Возможно, я чего-то в Вашей формулировке не понимаю, но ни о каких "помехах" речь идти не должна.

На первой картинке я черным изобразил период синуса (как смог, извините) 82 Герц. Я вполне уверен, что струна колеблется именно с этой частотой. Искажение ("провал") по центру - это особенность огибающей этой струны, простое определение по пересечениям даст удвоенную частоту.

Вторая картинка - то-же эффект, но не так сильно выраженный. Период сигнала заключен между двумя большими "горбами".

Так что просто посчетом переходов через ноль нельзя отделаться.

--------------------
И еще один рисунок где проблема видна очень хорошо. Период OK по переходам через 0 определится правильно, период BAD - нет.



Сообщение отредактировал Taradov Alexander - Aug 23 2010, 16:31
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 

Прикрепленные изображения
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Taradov Alexander   Определение периода сигнала   Aug 23 2010, 13:01
- - scifi   Что-то мне подсказывает, что здесь без "сложн...   Aug 23 2010, 14:00
|- - Taradov Alexander   QUOTE (scifi @ Aug 23 2010, 18:00) И ещё ...   Aug 23 2010, 14:10
- - Microwatt   Цитата(Taradov Alexander @ Aug 23 2010, 16...   Aug 23 2010, 14:16
|- - Taradov Alexander   QUOTE (Microwatt @ Aug 23 2010, 18:16) Ст...   Aug 23 2010, 14:47
|- - Oldring   Цитата(Taradov Alexander @ Aug 23 2010, 18...   Aug 23 2010, 15:17
|- - Taradov Alexander   QUOTE (Oldring @ Aug 23 2010, 19:17) У ва...   Aug 23 2010, 15:27
|- - Andrey_1   Цитата(Taradov Alexander @ Aug 23 2010, 19...   Apr 2 2011, 19:10
- - Oldring   Цитата(Taradov Alexander @ Aug 23 2010, 17...   Aug 23 2010, 14:31
- - @Ark   Судя по Вашему описанию и картинкам, главное отлич...   Aug 23 2010, 17:42
- - rezident   Может я чего-то не понял, но почему из всего спект...   Aug 23 2010, 17:51
|- - Taradov Alexander   QUOTE (rezident @ Aug 23 2010, 21:51) Мож...   Aug 23 2010, 18:29
|- - demiurg_spb   Я для настройки гитары пользуюсь вот этой софтинко...   Aug 23 2010, 19:14
|- - Taradov Alexander   QUOTE (demiurg_spb @ Aug 23 2010, 23:14) ...   Aug 23 2010, 19:21
|- - demiurg_spb   Цитата(Taradov Alexander @ Aug 23 2010, 23...   Aug 23 2010, 19:36
|- - Самурай   Alexander, попробуйте посмотреть в сторону алгорит...   Aug 23 2010, 19:57
- - Microwatt   Ага, теперь из картинки "ОК" и "Пло...   Aug 23 2010, 19:08
- - GetSmart   Автокореляцию не пробовали? Вроде идеальная для эт...   Aug 23 2010, 23:04
- - Wise   ЦитатаВ идеале нужен алгоритм, который найдет подо...   Aug 23 2010, 23:22
- - fontp   Здесь много всего муыкального, в том числе и опред...   Aug 24 2010, 09:59
- - Taradov Alexander   И так, приемлемое решение нашлось. Алгоритм: 1. Вх...   Aug 24 2010, 18:39
|- - jer   Цитата(Taradov Alexander @ Aug 24 2010, 22...   May 11 2011, 12:34
- - Dmitry Valento   Александр, но ведь ваш алгоритм не дает высокой то...   Mar 31 2011, 08:05
- - Alexey Lukin   Улучшить точность можно с помощью параболической и...   Apr 7 2011, 09:15
- - Make_Pic   Цитата(Alexey Lukin @ Apr 7 2011, 12:15) ...   Apr 18 2011, 09:59


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 18:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.0143 секунд с 7
ELECTRONIX ©2004-2016