Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Максимальные значения в массиве и их среднее занчения Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
GREEN_X5



Зарегистрирован: 13.04.2012
Сообщения: 136

СообщениеДобавлено: Ср Апр 15, 2015 12:32 pm Ответить с цитатой Вернуться к началу

Гуру алгоритмов, поможите, у меня мозга на это не хватает! )

Есть переменная-массив например DRD.
Элементы у него например с такими значениями
DRD={0,0,1,2,3,1,2,0,0,1,0,0,0,1,2,1,2,0}
Нужно вычислить среднее значение максимумов между нулями (выделил их жирным шрифтом).
Т.е. в данном случае между 3,1,2.
Заранее благодарен.


Последний раз редактировалось: GREEN_X5 (Ср Апр 15, 2015 3:45 pm), всего редактировалось 1 раз
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Ср Апр 15, 2015 12:44 pm Ответить с цитатой Вернуться к началу

надо среднее значение по всем массиву?

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
GREEN_X5



Зарегистрирован: 13.04.2012
Сообщения: 136

СообщениеДобавлено: Ср Апр 15, 2015 3:38 pm Ответить с цитатой Вернуться к началу

000 писал(а):
надо среднее значение по всем массиву?

Нет, среднее максимальных значений в блоках между нулевыми значениями.
Здесь
DRD={0,0,1,2,3,1,2,0,0,1,0,0,0,1,2,1,2,0}
проходя от первого элемента в массиве до последнего между нулевыми значениями видны "блоки" значений с непрерывно ненулевыми значениями, это здесь
1,2,3,1,2, и 1 и 1,2,1,2,
У каждого блока есть свой экстремум (максимум), это
3 и 1 и 2
Нужно среднее значение от 3,2,1, т.е. в итоге (3+1+2)/3
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Ср Апр 15, 2015 5:31 pm Ответить с цитатой Вернуться к началу

Вот ты посчитал среднее значение максимумов по всему массиву. А если массив будет длиннее и в нем не 3 "куска" а 50. Считать среднее из всех 50 "участков"?

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
GREEN_X5



Зарегистрирован: 13.04.2012
Сообщения: 136

СообщениеДобавлено: Ср Апр 15, 2015 8:28 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Вот ты посчитал среднее значение максимумов по всему массиву. А если массив будет длиннее и в нем не 3 "куска" а 50. Считать среднее из всех 50 "участков"?

Ну да )
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Ср Апр 15, 2015 10:22 pm Ответить с цитатой Вернуться к началу

Как то так

Код:
Begin = Ref(Aux1, -1) == 0 AND Aux1 != 0;
End = Ref(Aux1, -1) != 0 AND Aux1 == 0;

HS = HighestSince(Begin, Aux1, 1);
MaxVal = IIf(End, HS, 0);

aver = LastValue(Cum(MaxVal)/Cum(End));

Plot(Aux1, "", ColorRed);
Plot(aver, "111", colorBlue);

Тут Aux1 это исследуемый массив.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
GREEN_X5



Зарегистрирован: 13.04.2012
Сообщения: 136

СообщениеДобавлено: Ср Апр 15, 2015 10:45 pm Ответить с цитатой Вернуться к началу

Олег, спасибо!
А я тут напрягся и тоже через козью попу (вернее через цикл) написал. ))
Код:
// Drd - массив
CountExtr=0; SumExtr=0; TrgExtr=0; MaxExtr=0;
for( i = 0; i < BarCount; i++ ) {
if (Drd[i]!=0 AND Drd[i-1]==0) {TrgExtr=1; CountExtr=CountExtr+1; MaxExtr=0;}
if (Drd[i]==0 AND Drd[i-1]!=0) {TrgExtr=0; SumExtr=SumExtr+MaxExtr;}
if (TrgExtr==1) {MaxExtr=Max(MaxExtr,Drd[i]);}
}
MADrd=SumExtr/CountExtr;

Буду проверять оба варианта. )
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen