PDA

Просмотр полной версии : Подскажите алгоритм (Поиск максимумов в сигнале))


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

Algol
09.12.2009, 00:46
1)непонятно что такое всплеск
2)чем не устраивает прведеный алгоритм? Что значит "Может пропустить максимум, может указать два максимума в 1 всплеске" ? Откуда ты знаешь что там должен быть один максимум а не два ?

А вообще мне кажется эта задача не имеет однозначного решения. Все зависит от того, что считать "всплеском", а всплески у тебя, я так подозреваю, это низкочастотные колебания сигнала. Если это действительно так, то задача решаема только если задается еще и максимальная частота всплесков (то есть все колебания более высокой частоты - игнорируются). А отсюда выплывает и решение - низкочастотный фильтр + поиск простых максимумов на нем.

Marika-92
10.12.2009, 21:28
Подскажите алгоритм простого написания спама в Delphi.
Хочу проанализировать весь код и написать обнаружение спама...
а сам спам никак не выходит

Algol
11.12.2009, 16:16
Подскажите алгоритм простого написания спама в Delphi.
Хочу проанализировать весь код и написать обнаружение спама...
а сам спам никак не выходит
Попробуй свои силы в бредогенератрах :D
Они, кстати, в спаме тоже используются :cool: