Перейти к содержанию
    

Последовательное сравнение

Нужно производить чтение средствами мк, данные ацп 8бит с некого устройства хранения этих данных. В этом "буфере" находится 10 выборок ацп! В мк программе две переменные в которых должны сохранятся самое максимальное и минимальное значения из этих десяти выборок. Нужен пример подобного оптимального алгоритма или пинок в нужном направлении. Буду рад любому совету! Заранее спасибо!

Изменено пользователем uragan90

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Только само значение или еще и номера позиций в буфере этих значений? Какие вообще проблемы с алгоритмом? Последовательно перебираете все значения и записываете в min или max текущее, если оно удовлетворяет условию - меньше меньшего или больше большего.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Извините если что!

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

}

................

................

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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;
   }
}

 

как-то так, по-моему... кое-что избыточно сделал - в целях наглядности алгоритма...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вы не могли б подсказать откуда взялась и для чего нужна "item"?

В этой строчке

extern unsigned int get_value(unsigned int item);

Изменено пользователем uragan90

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вы не могли б подсказать откуда взялась и для чего нужна "item"?
Указывает, какое именно по счёту значение взять из:
1)У меня есть буфер на 3000 выборок ацп.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вы не могли б подсказать откуда взялась и для чего нужна "item"?

В этой строчке

extern unsigned int get_value(unsigned int item);

я же не знаю, как вы там работаете со своим массивом... написал "абстрактно"... вам ответили уже (опередили). специально старался давать переменным и функциям "говорящие" значения, чтобы вопросов было меньше, ан нет...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В принципе скорее всего это iten не потребуется... У меня связка мк плис срам! И данные из памяти счетчик выгребает последовательно (друг за другом). Но всё равно огромное спасибо :) раскрыли, так сказать, глаза. Помогли взглянуть на проблему с другой стороны! Спасибо всем!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...