Ну так и общались же нормально! Но когда начались категоричные высокомерные заявления - ну это уже ненормально. Просто надо уметь не только категорично стучать кулаком по столу, но и прислушиваться к тому, что говорят коллеги. Чеж сложного то? Нежелание переступить через свою гордыню то? Ну блин, ну надо уметь, вот как то так вот. А то, распалившись и стуча кулаком, можно потерять нить разговора и насочинять пурги про измерение омметром отрицательного сопротивления
А при нахождении экстремумов вовсе не обязательно присваивать "пустые значения". Потому что математическое "пустое множество" не имеет "в железе" реального числа. Видимо, тот "кандидат наук" не совсем наук кандидат
[uquote="MLX90640",url="/forum/viewtopic.php?p=4366905#p4366905"]Но когда начались категоричные высокомерные заявления - ну это уже ненормально.[/uquote]
Вы не только хам, но еще и лгун. Не было никакого высокомерия. Я вам подробно объяснил то, о чем вы сами и просили. Вы даже не удосужились прочесть и разобраться. По факту, конечно, а не на основе вашего вранья.
Цитата ниже это подтверждает. Тупо набор рандомных слов:
[uquote="MLX90640",url="/forum/viewtopic.php?p=4366905#p4366905"]А при нахождении экстремумов вовсе не обязательно присваивать "пустые значения". Потому что математическое "пустое множество" не имеет "в железе" реального числа.[/uquote]
Я уже не говорю про историю с СКЗ и вашего категоричного утверждения о всемогуществе медианного фильтра против линейной фильтрации. И то и другое говорит лишь о том, что вы не разбираетесь в предмете обсуждения. Это традиционно для тех, кто работает с готовыми шаблонами. Плохо понимая, что стоит за этими шаблонами и когда есть смысл их применять.
И тут Марка (мрака?) понесло Чувак от обиды ваще в расколбас ушел. Чувак, угомонись ради бога, а. Ну обиделся, ну и че, это ж не повод устраивать срачь то. Чето что у Демиурга, что у Мрака - одинаковое поведение наблюдуетца. Чуть че не по-ихнему и против ихнего представления - значить надобно сразу обиды устроить и стрелкопереводчиством заняться. Возрастное, чтоль? Ну-ну.
Я не говорил про всемогущесть медианного фильтра. Я сказал лишь, что это один из, причем несложный и дающий более положительный результат, чем простое арифметическое усреднение. Да и шумы то разными бывают, как бе вод. Есть еще фильтр Калмана с предсказательной моделью, хорошо работающий на зашумленных сигналах. Но он сложнее.
Ну а про среднеквадратичное - это вы сами там насочиняли ереси. Дескать, сопротивление может быть отрицательным, а среднеквадратичное только положительно и накапливает шум. Ну ерунда ж, согласитесь Перечитайте сами свои же опусы.
Вопрос был в выборе двух методов. Придётся попробовать оба, либо первый устроивший.
Ещё вопрос по коду сортировки... есть такой код, почему то программа не выходит из него. Почему это может быть ?
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; // установить флаг ( сортировка еще не закончена)
}
}
}
Не спрашивай по ком звонит колокол, он звонит по тебе !
[uquote="Alex_641",url="/forum/viewtopic.php?p=4366956#p4366956"]Почему это может быть ?[/uquote]
Наверное потому, что в конце каждого цикла у вас а=1.
Кроме того, сортировка пузырьком требует повторять ваш цикл N-1 раз. То есть число итераций будет равно N*(N-1).
PS. Специально для вас повторю. Медианный фильтр не работает по шумам и периодической помехе. Он эффективен только по импульсным помехам до определенной их интенсивности.
Сегодня прочитал эту тему. Когда-то то сталкивался с АЦП. 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 раза.
Не каждого ... только тогда , когда есть обмен. При очередном цикле I если обмена не было флаг не установится а=1 не установится, и должен произойти выход из цикла while/
Не спрашивай по ком звонит колокол, он звонит по тебе !
Пузырьковая, как я сказал выше - она самая медленная. Но однажды один славный поц по фамилии Хоар усовершенствовал этот алгоритм, и так обрадовался этому, что назвал его "быстрой сортировкой" - quick sort. У алгоритма есть как положительные, так и отрицательные стороны, и есть усовершенствования.
Сортировка, в отличие от простого выбрасывания "крайних", дает упорядоченный ряд, и на его основе можно применить так сказать "оконное" среднее, используя соседние от медианы элементы с весовыми коэффициентами. Это позволит более точно отследить поведение сигнала.
[uquote="Alex_641",url="/forum/viewtopic.php?p=4366966#p4366966"]Не каждого ...[/uquote] Да, вы правы, но в любом случае это не один цикл перебора.
Насчет быстрой сортировки можете прочесть тут: https://ru.wikipedia.org/wiki/Быстрая_сортировка
Но это ничего не изменит. Медиана не будет фильтровать ваши помехи. Вы получите интерференцию между частотой дискретизации и частотой помехи.
Медиана для вас по большому счету вообще не нужна или нужна опционально. Основным методом будет линейная фильтрация.
[uquote="MLX90640",url="/forum/viewtopic.php?p=4366967#p4366967"]Сортировка, в отличие от простого выбрасывания "крайних", дает упорядоченный ряд, и на его основе можно применить так сказать "оконное" среднее, используя соседние от медианы элементы с весовыми коэффициентами. Это позволит более точно отследить поведение сигнала.[/uquote]
Какое "поведение сигнала"? Вы вообще понимаете что пишите? Куда отслеживать и зачем - вы же перемешали отсчеты? Сигнала (который следует фильтровать) больше нет.
"Оконное" среднее при прямоугольном окне вообще не требует упорядочивать массив. А при взвешивающем окне (Хэмминг, Блэкман и т.д.) КАТЕГОРИЧЕСКИ ЗАПРЕЩЕНО менять положение отсчетов внутри массива. Назначение взвешивания никакого отношения к вероятности не имеет. Это просто минимизация краевых эффектов исходного прямоугольного окна.
MLX90640, тебе НЕ хамили и тебя НЕ оскорбляли.
это ТОЛЬКО ты тут хамишь и оскорбляешь.
и это уже не первая тема, где ты хамишь и устраиваешь срач. и я тебя уже предупреждал по этому поводу.
считай, что это последнее "устное" предупреждение. при повторении сразу же отправлю в "баню".
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
КРАМ писал(а):Насчет быстрой сортировки можете прочесть тут
Мне хотя бы надо запустить прогу , пока пусть будет пузырьком... Там ещё есть считывание ацп напряжения аккумов. И последующая индикация светодиодами. Там ещё могут быть помехи от высоковольтного преобразователя. Пока хотя бы так как есть. А там уже можно думать о других методах сортировки, в зависимости от оставшегося места флеш аттини26.
Не спрашивай по ком звонит колокол, он звонит по тебе !
а зачем полная сортировка, если задача найти несколько крайних? (то есть, если решать именно такую задачу) . и зачем вообще сортировать отдельно, а не в процессе выборки?
Последний раз редактировалось Martian Вс фев 05, 2023 19:03:50, всего редактировалось 1 раз.
[uquote="Alex_641",url="/forum/viewtopic.php?p=4366549#p4366549"]Второй считать в массив 20 значений, произвести сортировку массива, отсечь с права и с лева несколько показаний ( к примеру по 5 ) , и затем уже от оставшихся 10-ти найти среднеквадратичный результат.[/uquote]
Еще мысля-зачем сортировать? можно 5 раз прокрутить цикл-в цикле находим минимальное (кроме 0) и максимальное значения,запоминая их порядковые номера в массиве,после выхода из цикла , зная их порядковые номера просто затираем (присваиваем значение 0),в итоге останутся 10 значений...
Последний раз редактировалось Novice user Вс фев 05, 2023 19:05:56, всего редактировалось 1 раз.
[uquote="Demiurg",url="/forum/viewtopic.php?p=4366972#p4366972"]Насчет дробления массивов уже думал. В общем, сегодня размялся, читал варианты, прикидывал свои варианты.[/uquote]
Обратите внимание на классический РЕЗУЛЬТАТ при оптимизации матричных алгоритмов. Это касается и БПФ против ДПФ и быстрой сортировки против "пузырька".
Мы всегда имеем замену N^2 на O*N*logN. С одним маленьким, но очень важным условием. Либо всё, либо ничего.
Но при одномерном массиве медиана работает только для случая, когда исходный чистый сигнал ПОСТОЯНЕН во времени. Остальные варианты применения медианной фильтрации относятся к так называемой ВЕРТИКАЛЬНОЙ фильтрации. То есть фильтрации ПО СТОЛБЦАМ двух или трехмерного массива. Для этого нужно иметь когерентные строки в таком массиве. И тогда мы получаем результирующий массив на одно измерение меньше. К нему и применяется линейная фильтрация.
Добавлено after 3 minutes 1 second:
[uquote="Alex_641",url="/forum/viewtopic.php?p=4366978#p4366978"]Там ещё могут быть помехи от высоковольтного преобразователя.[/uquote]
Помехи от преобразователя периодические. Медиана работать не будет.
Вы усложняете задачу без всяких на то причин и понимания. Так разработку не делают.
[uquote="Martian",url="/forum/viewtopic.php?p=4366980#p4366980"]а зачем полная сортировка, если задача найти несколько крайних?[/uquote]
Вооот!!! Об этом и речь.
Находить крайние значения на лету можно, только выбирать их нельзя. Потому что невозможно предсказать будущее.