Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Локальные максимумы в числовом массиве 
:(
    Опции темы
rv82
Дата 25.11.2008, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 25.11.2008

Репутация: нет
Всего: нет



Здравствуйте! Помогите пожалуйста с алгоритмом. Имеется массив чисел (точнее, неупорядоченная последователность чисел) неограниченной длины, примерно такого вида:

1 2 1 2 1 2 3 4 5 4 3 2 1 2 1 2 3 4 5 6 5 4 5 4 3 2
                        ^                               ^

Нужно найти все локальные максимумы в этом массиве (обозначены стрелками). Никак не могу дойти до решения  smile . Трудность в том, что заранее неизвестно, какими числами заполнен массив и какой он длины. Схема примерно такая, как приведено выше. Заранее спасибо!
PM MAIL   Вверх
sergejzr
Дата 25.11.2008, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 4
Всего: 360



Почему в начале массива 12121... двойки не считаются максимумами?


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
rv82
Дата 25.11.2008, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 25.11.2008

Репутация: нет
Всего: нет



Точно, забыл сказать. Двойки максимумами не считаются. Это "мусор", вызванный колебаниями измерительного прибора.
PM MAIL   Вверх
sergejzr
Дата 25.11.2008, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 4
Всего: 360



Так надо значит сперва сигнал выровнять.

Т.е надо первым делом из всех нечётных вычесть 1, а из чётных 2? Получается так?

А вообще алгоритм простой. Бежишь по полю пока предидущее число меньше нестоящего. Как только становиться наоборот, предыдущее число - максимум.



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
cardinal
Дата 25.11.2008, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 5
Всего: 99



Цитата(sergejzr @  25.11.2008,  12:58 Найти цитируемый пост)
Т.е надо первым делом из всех нечётных вычесть 1, а из чётных 2? Получается так?

Это если колебание такое: 121212... А если другое?

А бы лучше смотрел так:
1, 2 (поднялся на один вверх за максимум не считать), 1, 2 (поднялся на один вверх за максимум не считать), 3 (опа вот оно - восхождение), 4 еще больше, и т.д. пока вниз не пойдет, а там также...

В случае 6, 5, 4, 5, 4 тоже сработает, т.к. восхождение только на одну ступень.

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


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
sergejzr
Дата 26.11.2008, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 4
Всего: 360



Цитата(cardinal @  25.11.2008,  21:00 Найти цитируемый пост)
Это если колебание такое: 121212... А если другое?

Вот я и говорю, что сначала надо определиться, что шум, а что замер.




--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
rv82
Дата 26.11.2008, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 25.11.2008

Репутация: нет
Всего: нет



Цитата(cardinal @ 25.11.2008,  22:00)
Цитата(sergejzr @  25.11.2008,  12:58 Найти цитируемый пост)
Т.е надо первым делом из всех нечётных вычесть 1, а из чётных 2? Получается так?

Это если колебание такое: 121212... А если другое?

А бы лучше смотрел так:
1, 2 (поднялся на один вверх за максимум не считать), 1, 2 (поднялся на один вверх за максимум не считать), 3 (опа вот оно - восхождение), 4 еще больше, и т.д. пока вниз не пойдет, а там также...

В случае 6, 5, 4, 5, 4 тоже сработает, т.к. восхождение только на одну ступень.

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

Я примерно так и делаю. Проблемы быввают только в том, что сигнал в большинстве случаев гораздо более зашумлён. Хотя, за идею выравнивания сигнала - спасибо!  smile Подумаю над этим.
PM MAIL   Вверх
cardinal
Дата 26.11.2008, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 5
Всего: 99



Цитата(rv82 @  26.11.2008,  08:07 Найти цитируемый пост)
Хотя, за идею выравнивания сигнала - спасибо!  smile Подумаю над этим. 

Лучше над этим
Цитата

The following algorithm will simulate the effect of a low-pass filter on a series of digital samples:
...

Low-pass filter
подумай... smile 


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0483 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.