Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Подскажите алгоритм (Поиск максимумов в сигнале)) (https://forum.antichat.xyz/showthread.php?t=162002)

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

Цитата:

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

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


Время: 21:12