uragan90 0 7 марта, 2011 Опубликовано 7 марта, 2011 (изменено) · Жалоба Нужно производить чтение средствами мк, данные ацп 8бит с некого устройства хранения этих данных. В этом "буфере" находится 10 выборок ацп! В мк программе две переменные в которых должны сохранятся самое максимальное и минимальное значения из этих десяти выборок. Нужен пример подобного оптимального алгоритма или пинок в нужном направлении. Буду рад любому совету! Заранее спасибо! Изменено 7 марта, 2011 пользователем uragan90 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
rezident 0 8 марта, 2011 Опубликовано 8 марта, 2011 · Жалоба Только само значение или еще и номера позиций в буфере этих значений? Какие вообще проблемы с алгоритмом? Последовательно перебираете все значения и записываете в min или max текущее, если оно удовлетворяет условию - меньше меньшего или больше большего. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uragan90 0 8 марта, 2011 Опубликовано 8 марта, 2011 · Жалоба Извините если что! 1)У меня есть буфер на 3000 выборок ацп. 2)Мне нужно их оттуда выбрать пачками по 10 выборок и сохранить в переменной мин и мах только самое малое и самое большое из этих 10 выборок. 3)Мне нужно получить в итоге всех этих манипуляций массив из 300 минимальных и максимальных значений. Посмотрите скорее всего не правильно, а как надо не догнать. unsigned int max0; unsigned int min0; unsigned int max1; unsigned int min1; unsigned int max2; unsigned int min2; .............. .............. DATA_8bit_WR(); unsigned int max0=WR_PORT1; unsigned int min0=WR_PORT1; if(max0<WR_PORT1) { max0=WR_PORT1 } if(min0<WR_PORT1) { min0=WR_PORT1 } if(max1<WR_PORT1) { max1=WR_PORT1 } if(min1<WR_PORT1) { min1=WR_PORT1 } if(max2<WR_PORT1) { max2=WR_PORT1 } if(min2<WR_PORT1) { min2=WR_PORT1 } ................ ................ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ARV 1 8 марта, 2011 Опубликовано 8 марта, 2011 · Жалоба typedef struct{ unsigned int min, max; } minmax_t; #define CNT 300 #define GROUPCNT 10 minmax_t minmax[CNT]; extern unsigned int get_value(unsigned int item); void fill_minmax(void){ unsigned int max, min, tmp; for(unsigned int i=0; i<CNT; i++){ min = 0xFFFF; max = 0; for(unsigned char j=0; j<GROUPCNT; j++){ tmp = get_value(i*GROUPCNT + j); if(tmp < min) min = tmp; if(tmp > max) max = tmp; } minmax[i].min = min; minmax[i].max = max; } } как-то так, по-моему... кое-что избыточно сделал - в целях наглядности алгоритма... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uragan90 0 8 марта, 2011 Опубликовано 8 марта, 2011 · Жалоба ARV, Огромнейшее спасибо!!!!!!!! Вы меня очень выручили, можно сказать спасли! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uragan90 0 8 марта, 2011 Опубликовано 8 марта, 2011 (изменено) · Жалоба А вы не могли б подсказать откуда взялась и для чего нужна "item"? В этой строчке extern unsigned int get_value(unsigned int item); Изменено 8 марта, 2011 пользователем uragan90 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
NullPointer 0 8 марта, 2011 Опубликовано 8 марта, 2011 · Жалоба А вы не могли б подсказать откуда взялась и для чего нужна "item"?Указывает, какое именно по счёту значение взять из:1)У меня есть буфер на 3000 выборок ацп. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ARV 1 8 марта, 2011 Опубликовано 8 марта, 2011 · Жалоба А вы не могли б подсказать откуда взялась и для чего нужна "item"? В этой строчке extern unsigned int get_value(unsigned int item); я же не знаю, как вы там работаете со своим массивом... написал "абстрактно"... вам ответили уже (опередили). специально старался давать переменным и функциям "говорящие" значения, чтобы вопросов было меньше, ан нет... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uragan90 0 8 марта, 2011 Опубликовано 8 марта, 2011 · Жалоба В принципе скорее всего это iten не потребуется... У меня связка мк плис срам! И данные из памяти счетчик выгребает последовательно (друг за другом). Но всё равно огромное спасибо :) раскрыли, так сказать, глаза. Помогли взглянуть на проблему с другой стороны! Спасибо всем!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться