Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Алгоритмы > Алгоритм поиска пиков в масс-спектре


Автор: GeraDOT 20.08.04, 02:38
Привет честной кампании!
Помогите найти простой (желательно) но эффективный алгоритм поиска пиков в массиве дискретных данных (с умеренными шумами). Или подскажите с чего начать.
Заранее благодарен!

Автор: igosm 20.08.04, 06:08
пусть массив данных есть a[N-1], N - число элементов массива

если у шумов нет какой-то закономерности, дающей допинформацию о местонахождении пиков, то

для поиска глобального максимума
заведи переменную max
положи max = a[0] (первый элемент массива)
сравнивай каждый последующий элемент с предыдущим, если он (послед) больше, то делай
max = послед, если нет - иди дальше; так до последнего элемента.
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
     
    for (int i=0; i<N-1; i++)
         {
     
         if (a[i] < a[i+1]) max = a[i+1];
     
         }


если же нужны и локальные максимумы, то надо отслеживать и убывания, то есть ситуации, когда

a[i-1] < a[i] и a[i] > a[i+1]


также надо определиться, считать ли пиком промежутки типа 1 2 3 4 4 4 4 3 2 1, то есть будет ли каждый элемент, равный четырем, пиком.


Если у тебя не многомиллиардный массив, то это будет быстро работать, так как на каждом шаге цикла 1 сравнение и, возможно, 1 присваивание в глобальном случае; 2 сравнения в локальном, присваивания - в зависимости от постановки задачи.

Автор: rodion 20.08.04, 13:36
можно найти все максимумы
максмум считается еслм слева отнего воразтание а справа убывание
а что читать шумом счтитай сам

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)