Marana
08.12.2009, 19:53
Собственно стоит задача средствами, к примеру Delphi, отыскать все позиции пиков в некотором сигнале (скажу сразу - сигналы могут быть разные). Пиком будем считать позицию, где амплитуда сигнала составляет скажем 15% от максимального пика, но, на один всплеск должен приходиться только один пик (его координата). Т.е, это не просто поиск максимальных элементов в массиве - это поиск масимального элемента во всплеске.
Сигнал задан огромным массивом значений. Для наглядности прилеплю картинку с кусочком сигнала.
Вот мой алгоритм - он вроде как и работает, но не точно (Может пропустить максимум, может указать два максимума в 1 всплеске).
Собственно алгоритм:
0. Находим наибольший эл-т в Массиве (это максимум сигнала от которого берется 15 %)
1. Находим все амплитуды (т.е справа и слева от таких точек будет меньший элемент)
2. Записываем 0 туда, где амплитуда меньше 15% от максимума
3. Начинаем поиск максимального элемента. В момент, когда слева не 0, а справа 0, меняем индекс массива, в который записываем максимумы. Т.е у нас получается поиск максимумов не по всему исходному массиву, а по всплескам.
Но, как я уже и сказал метод весьма не точен :(
Ломаю башку уже 2 недели, вот решил написать, может кто сообразительней меня будет или уже имел опыт с такого рода задачами :)
И да, собственно фрагмент сигнала:
http://pic.ipicture.ru/uploads/091208/aYF3Q5Dnx3.jpg
Сигнал задан огромным массивом значений. Для наглядности прилеплю картинку с кусочком сигнала.
Вот мой алгоритм - он вроде как и работает, но не точно (Может пропустить максимум, может указать два максимума в 1 всплеске).
Собственно алгоритм:
0. Находим наибольший эл-т в Массиве (это максимум сигнала от которого берется 15 %)
1. Находим все амплитуды (т.е справа и слева от таких точек будет меньший элемент)
2. Записываем 0 туда, где амплитуда меньше 15% от максимума
3. Начинаем поиск максимального элемента. В момент, когда слева не 0, а справа 0, меняем индекс массива, в который записываем максимумы. Т.е у нас получается поиск максимумов не по всему исходному массиву, а по всплескам.
Но, как я уже и сказал метод весьма не точен :(
Ломаю башку уже 2 недели, вот решил написать, может кто сообразительней меня будет или уже имел опыт с такого рода задачами :)
И да, собственно фрагмент сигнала:
http://pic.ipicture.ru/uploads/091208/aYF3Q5Dnx3.jpg