Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.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 |
можно найти все максимумы максмум считается еслм слева отнего воразтание а справа убывание а что читать шумом счтитай сам |