На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
  
> Алгоритм поиска пиков в масс-спектре , спектр - массив измеренных данных
    Привет честной кампании!
    Помогите найти простой (желательно) но эффективный алгоритм поиска пиков в массиве дискретных данных (с умеренными шумами). Или подскажите с чего начать.
    Заранее благодарен!
      пусть массив данных есть a[N-1], N - число элементов массива

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

      для поиска глобального максимума
      заведи переменную max
      положи max = a[0] (первый элемент массива)
      сравнивай каждый последующий элемент с предыдущим, если он (послед) больше, то делай
      max = послед, если нет - иди дальше; так до последнего элемента.
      ExpandedWrap disabled
         
        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 сравнения в локальном, присваивания - в зависимости от постановки задачи.
        можно найти все максимумы
        максмум считается еслм слева отнего воразтание а справа убывание
        а что читать шумом счтитай сам
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0396 ]   [ 15 queries used ]   [ Generated: 24.04.24, 02:10 GMT ]