Показать сообщение отдельно

Подскажите алгоритм (Поиск максимумов в сигнале))
  #1  
Старый 08.12.2009, 19:53
Marana
Новичок
Регистрация: 06.12.2009
Сообщений: 1
С нами: 8647277

Репутация: 0
По умолчанию Подскажите алгоритм (Поиск максимумов в сигнале))

Собственно стоит задача средствами, к примеру Delphi, отыскать все позиции пиков в некотором сигнале (скажу сразу - сигналы могут быть разные). Пиком будем считать позицию, где амплитуда сигнала составляет скажем 15% от максимального пика, но, на один всплеск должен приходиться только один пик (его координата). Т.е, это не просто поиск максимальных элементов в массиве - это поиск масимального элемента во всплеске.

Сигнал задан огромным массивом значений. Для наглядности прилеплю картинку с кусочком сигнала.


Вот мой алгоритм - он вроде как и работает, но не точно (Может пропустить максимум, может указать два максимума в 1 всплеске).

Собственно алгоритм:

0. Находим наибольший эл-т в Массиве (это максимум сигнала от которого берется 15 %)

1. Находим все амплитуды (т.е справа и слева от таких точек будет меньший элемент)

2. Записываем 0 туда, где амплитуда меньше 15% от максимума

3. Начинаем поиск максимального элемента. В момент, когда слева не 0, а справа 0, меняем индекс массива, в который записываем максимумы. Т.е у нас получается поиск максимумов не по всему исходному массиву, а по всплескам.

Но, как я уже и сказал метод весьма не точен

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


И да, собственно фрагмент сигнала:

 
Ответить с цитированием