Обсуждаем контроллеры компании Atmel.
Ответить

Re: Алгоритм сглаживания шумов АЦП микроконтроллера.

Вс фев 05, 2023 16:57:55

Ну так и общались же нормально! Но когда начались категоричные высокомерные заявления - ну это уже ненормально. Просто надо уметь не только категорично стучать кулаком по столу, но и прислушиваться к тому, что говорят коллеги. Чеж сложного то? Нежелание переступить через свою гордыню то? Ну блин, ну надо уметь, вот как то так вот. А то, распалившись и стуча кулаком, можно потерять нить разговора и насочинять пурги про измерение омметром отрицательного сопротивления :)

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

Re: Алгоритм сглаживания шумов АЦП микроконтроллера.

Вс фев 05, 2023 17:35:16

Но когда начались категоричные высокомерные заявления - ну это уже ненормально.

Вы не только хам, но еще и лгун. Не было никакого высокомерия. Я вам подробно объяснил то, о чем вы сами и просили. Вы даже не удосужились прочесть и разобраться. По факту, конечно, а не на основе вашего вранья.
Цитата ниже это подтверждает. Тупо набор рандомных слов:
А при нахождении экстремумов вовсе не обязательно присваивать "пустые значения". Потому что математическое "пустое множество" не имеет "в железе" реального числа.

Я уже не говорю про историю с СКЗ и вашего категоричного утверждения о всемогуществе медианного фильтра против линейной фильтрации. И то и другое говорит лишь о том, что вы не разбираетесь в предмете обсуждения. Это традиционно для тех, кто работает с готовыми шаблонами. Плохо понимая, что стоит за этими шаблонами и когда есть смысл их применять.

Re: Алгоритм сглаживания шумов АЦП микроконтроллера.

Вс фев 05, 2023 18:25:58

И тут Марка (мрака?) понесло :))) Чувак от обиды ваще в расколбас ушел. Чувак, угомонись ради бога, а. Ну обиделся, ну и че, это ж не повод устраивать срачь то. Чето что у Демиурга, что у Мрака - одинаковое поведение наблюдуетца. Чуть че не по-ихнему и против ихнего представления - значить надобно сразу обиды устроить и стрелкопереводчиством заняться. Возрастное, чтоль? Ну-ну.

Я не говорил про всемогущесть медианного фильтра. Я сказал лишь, что это один из, причем несложный и дающий более положительный результат, чем простое арифметическое усреднение. Да и шумы то разными бывают, как бе вод. Есть еще фильтр Калмана с предсказательной моделью, хорошо работающий на зашумленных сигналах. Но он сложнее.
Ну а про среднеквадратичное - это вы сами там насочиняли ереси. Дескать, сопротивление может быть отрицательным, а среднеквадратичное только положительно и накапливает шум. Ну ерунда ж, согласитесь :) Перечитайте сами свои же опусы.

И узбагойтезь :)

Re: Алгоритм сглаживания шумов АЦП микроконтроллера.

Вс фев 05, 2023 18:27:21

Вопрос был в выборе двух методов. Придётся попробовать оба, либо первый устроивший.
Ещё вопрос по коду сортировки... есть такой код, почему то программа не выходит из него. Почему это может быть ?
Код:
      for (i=0;i<20;i++) mass[i]=read_adc(9);  // +++++++++++++++++++++++++счтываем 20 значений ацп помещаем в массив mass
                         
      while (a>0)    // сортировка массива методом пузырька кол-во элементов 20    //+++++++++++++++расчёт измерений АЦП+++++++++++++++++++++
               {
                  for (i=0;i<20;i++)   // цикл
                      {
                       a=0;             // флаг окончания сравнений сбросить
                        if (mass[i]>mass[i+1])  // если элемент меньше следующего то
                                       {
                                        z=mass[i];          // поменять
                                         mass[i]=mass[i+1]; // их
                                          mass[i+1]=z;      // местами
                                           a=1;             // установить флаг ( сортировка еще не закончена)
                                       }
               
                      }
               }

Re: Алгоритм сглаживания шумов АЦП микроконтроллера.

Вс фев 05, 2023 18:31:33

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

Re: Алгоритм сглаживания шумов АЦП микроконтроллера.

Вс фев 05, 2023 18:33:17

Придётся попробовать оба,

Конечно, надо попробовать оба способа и сравнить.
А сортировка "пузырьком" - как раз вот самая медленная.
Быстрая сортировка qsort - вот тут объяснение: https://www.youtube.com/watch?v=KlPruG68JTo
Вот тут самописная реализация: http://mindhalls.ru/quick-sort-c-cpp/
Ну и в C есть встроенная функция qsort. https://cpp.com.ru/shildt_spr_po_c/18/qsort.html
Заодним попробуйте метод насяльника Мрака - не сортировать, а "убирать крайние", вставляя "пустые числа" :)

Re: Алгоритм сглаживания шумов АЦП микроконтроллера.

Вс фев 05, 2023 18:36:56

Почему это может быть ?

Наверное потому, что в конце каждого цикла у вас а=1.
Кроме того, сортировка пузырьком требует повторять ваш цикл N-1 раз. То есть число итераций будет равно N*(N-1).
PS. Специально для вас повторю. Медианный фильтр не работает по шумам и периодической помехе. Он эффективен только по импульсным помехам до определенной их интенсивности.

Re: Алгоритм сглаживания шумов АЦП микроконтроллера.

Вс фев 05, 2023 18:40:05

Сегодня прочитал эту тему. Когда-то то сталкивался с АЦП. MLX90640 заинтриговал меня с пузырьковой сортировкой. Решил немного размяться. Наскоро прочитал в инете как работает пузырьковая сортировка, попробовал варианты. Остановился на этом.

Спойлер
Код:
//==================
void Proc_Device (void)
{
   static u08 _proc_device;

   #define MASS_QTY 8

   static u08 j;

   static u16 mass [MASS_QTY] =
   {
      7, 9, 19, 17, 20, 30, 22, 8,
   };

   bool f = true;

   u16 i = 0;

   u16 a = 0;

   j = 0;

   while (f)
   {
      f = false;

      for (i = 0; i < (MASS_QTY - 1); i++)
      {
         if (mass [i] > mass [i + 1])
         {
            a = mass [i + 1];
            mass [i + 1] = mass [i];
            mass [i] = a;

            f = true;
         }
      }

      j++;
   }

   PORTB = j;

   switch (_proc_device)
   {
      case 0: // Init IO
         _proc_device = 1;
         break;

      case 1:
         break;

      case 2:
         break;

      default:
         break;
   }
}
//==================


Поверхностный анализ показывает, что нет явного признака окончания сортировки. Максимальное число вариантов. Либо любая перестановка уже требует перепроверки. Поэтому. Любая перестановка устанавливает флаг. Соответственно, количество входов в цикле равно максимальному количеству вариантов + 1. Даже если все отсортировано, это два входа в функцию. Последний вход в функцию это проверка флага. То есть, когда все уже было или отсортировано, флаг сброшен.
Последний раз редактировалось Demiurg Вс фев 05, 2023 18:50:42, всего редактировалось 2 раз(а).

Re: Алгоритм сглаживания шумов АЦП микроконтроллера.

Вс фев 05, 2023 18:42:31

КРАМ писал(а):в конце каждого цикла у вас а=1.

Не каждого ... только тогда , когда есть обмен. При очередном цикле I если обмена не было флаг не установится а=1 не установится, и должен произойти выход из цикла while/

Re: Алгоритм сглаживания шумов АЦП микроконтроллера.

Вс фев 05, 2023 18:46:01

Пузырьковая, как я сказал выше - она самая медленная. Но однажды один славный поц по фамилии Хоар усовершенствовал этот алгоритм, и так обрадовался этому, что назвал его "быстрой сортировкой" - quick sort. У алгоритма есть как положительные, так и отрицательные стороны, и есть усовершенствования.
Сортировка, в отличие от простого выбрасывания "крайних", дает упорядоченный ряд, и на его основе можно применить так сказать "оконное" среднее, используя соседние от медианы элементы с весовыми коэффициентами. Это позволит более точно отследить поведение сигнала.

Re: Алгоритм сглаживания шумов АЦП микроконтроллера.

Вс фев 05, 2023 18:48:41

Не каждого ...
Да, вы правы, но в любом случае это не один цикл перебора.

Насчет быстрой сортировки можете прочесть тут: https://ru.wikipedia.org/wiki/Быстрая_сортировка
Но это ничего не изменит. Медиана не будет фильтровать ваши помехи. Вы получите интерференцию между частотой дискретизации и частотой помехи.
Медиана для вас по большому счету вообще не нужна или нужна опционально. Основным методом будет линейная фильтрация.

Re: Алгоритм сглаживания шумов АЦП микроконтроллера.

Вс фев 05, 2023 18:53:01

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

Re: Алгоритм сглаживания шумов АЦП микроконтроллера.

Вс фев 05, 2023 18:55:33

Сортировка, в отличие от простого выбрасывания "крайних", дает упорядоченный ряд, и на его основе можно применить так сказать "оконное" среднее, используя соседние от медианы элементы с весовыми коэффициентами. Это позволит более точно отследить поведение сигнала.

:facepalm:
Какое "поведение сигнала"? Вы вообще понимаете что пишите? Куда отслеживать и зачем - вы же перемешали отсчеты? Сигнала (который следует фильтровать) больше нет.
"Оконное" среднее при прямоугольном окне вообще не требует упорядочивать массив. А при взвешивающем окне (Хэмминг, Блэкман и т.д.) КАТЕГОРИЧЕСКИ ЗАПРЕЩЕНО менять положение отсчетов внутри массива. Назначение взвешивания никакого отношения к вероятности не имеет. Это просто минимизация краевых эффектов исходного прямоугольного окна.

Re: Алгоритм сглаживания шумов АЦП микроконтроллера.

Вс фев 05, 2023 18:55:44

MLX90640, тебе НЕ хамили и тебя НЕ оскорбляли.
это ТОЛЬКО ты тут хамишь и оскорбляешь.
и это уже не первая тема, где ты хамишь и устраиваешь срач. и я тебя уже предупреждал по этому поводу.
считай, что это последнее "устное" предупреждение. при повторении сразу же отправлю в "баню".

Re: Алгоритм сглаживания шумов АЦП микроконтроллера.

Вс фев 05, 2023 18:57:26

КРАМ писал(а):Насчет быстрой сортировки можете прочесть тут

Мне хотя бы надо запустить прогу , пока пусть будет пузырьком... Там ещё есть считывание ацп напряжения аккумов. И последующая индикация светодиодами. Там ещё могут быть помехи от высоковольтного преобразователя. Пока хотя бы так как есть. А там уже можно думать о других методах сортировки, в зависимости от оставшегося места флеш аттини26.

Re: Алгоритм сглаживания шумов АЦП микроконтроллера.

Вс фев 05, 2023 19:00:29

а зачем полная сортировка, если задача найти несколько крайних? (то есть, если решать именно такую задачу) . и зачем вообще сортировать отдельно, а не в процессе выборки?
Последний раз редактировалось Martian Вс фев 05, 2023 19:03:50, всего редактировалось 1 раз.

Re: Алгоритм сглаживания шумов АЦП микроконтроллера.

Вс фев 05, 2023 19:02:14

Второй считать в массив 20 значений, произвести сортировку массива, отсечь с права и с лева несколько показаний ( к примеру по 5 ) , и затем уже от оставшихся 10-ти найти среднеквадратичный результат.

Еще мысля-зачем сортировать? можно 5 раз прокрутить цикл-в цикле находим минимальное (кроме 0) и максимальное значения,запоминая их порядковые номера в массиве,после выхода из цикла , зная их порядковые номера просто затираем (присваиваем значение 0),в итоге останутся 10 значений...
Последний раз редактировалось Novice user Вс фев 05, 2023 19:05:56, всего редактировалось 1 раз.

Re: Алгоритм сглаживания шумов АЦП микроконтроллера.

Вс фев 05, 2023 19:07:36

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

Обратите внимание на классический РЕЗУЛЬТАТ при оптимизации матричных алгоритмов. Это касается и БПФ против ДПФ и быстрой сортировки против "пузырька".
Мы всегда имеем замену N^2 на O*N*logN. С одним маленьким, но очень важным условием. Либо всё, либо ничего.
Но при одномерном массиве медиана работает только для случая, когда исходный чистый сигнал ПОСТОЯНЕН во времени. Остальные варианты применения медианной фильтрации относятся к так называемой ВЕРТИКАЛЬНОЙ фильтрации. То есть фильтрации ПО СТОЛБЦАМ двух или трехмерного массива. Для этого нужно иметь когерентные строки в таком массиве. И тогда мы получаем результирующий массив на одно измерение меньше. К нему и применяется линейная фильтрация.

Добавлено after 3 minutes 1 second:
Там ещё могут быть помехи от высоковольтного преобразователя.

Помехи от преобразователя периодические. Медиана работать не будет.
Вы усложняете задачу без всяких на то причин и понимания. Так разработку не делают.

Re: Алгоритм сглаживания шумов АЦП микроконтроллера.

Вс фев 05, 2023 19:09:59

Вы чё то меня загрузили , надо подумать. А почему прога то не выходит из сортировки то ?

Re: Алгоритм сглаживания шумов АЦП микроконтроллера.

Вс фев 05, 2023 19:11:00

а зачем полная сортировка, если задача найти несколько крайних?

Вооот!!! Об этом и речь.
Находить крайние значения на лету можно, только выбирать их нельзя. Потому что невозможно предсказать будущее.
Ответить