ViKo 1 30 июня, 2019 Опубликовано 30 июня, 2019 · Жалоба Только что, adnega сказал: Он берет выборки как попало, а не каждую 10. Берет-то он их подряд, а выдает как-попало. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 33 30 июня, 2019 Опубликовано 30 июня, 2019 · Жалоба 15 minutes ago, Forger said: Кусочное усреднение группами по 10 и скользящее с окном 10 отчетов дают разные результаты. Разумеется, когда речь идет про изменяющийся сигнал, причем порой скачкообразно. Сама суть скользящего среднего - постоянное "держание в уме" этого самого среднего значения. Переходя на кусочные расчеты группами всегда будет теряться предыдущий накопленный результат среднего значения. А цирк оказывается не сбежал Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 30 июня, 2019 Опубликовано 30 июня, 2019 · Жалоба 4 minutes ago, ViKo said: Если вы выдаёте только каждый 10-й (в моём примере) результат - то абсолютно одинаковый. Возьмите на бумаге прикиньте выборки и их скользящее среднее. Нет, неодинаковый и очень сильно зависит от входного сигнала. Проверить легко на листочке бумаги. Давайте уже отвяжемся от того, когда и с какой периодичностью берем выходные данные фильтра с какой-то своей личной целью, поскольку от этого его работа никак не зависит. В таком случае не имеет значения какой именно фильтр. Важно, чтобы график на его выходе давал относительно ровную линию без резких скачков и плясок. Такой фильтр годится для отображения хоть раз в мс, хоть раз в год. 2 minutes ago, RobFPGA said: А цирк оказывается не сбежал Вы еще успеете, поэтому не отвлекайтесь на эту тему, а то не успеете. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 30 июня, 2019 Опубликовано 30 июня, 2019 · Жалоба Что касается индикации, то выдавать числа на индикатор чаще 10 раз в секунду нет смысла. Время реакции человека 0,1 с. Следовательно, измерять можно сигнал с полосой 5 Гц. Если сигнал медленный, можно и нужно фильтровать. Но скакать индикатор будет, как ни фильтруй. adnega привел хороший пример с числами 9,9 и 10,1. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 30 июня, 2019 Опубликовано 30 июня, 2019 · Жалоба 44 минуты назад, Forger сказал: скользящее каждый отчет требует одно вычитание, одно сложение и всего одно деление. По словесному описанию это больше на БИХ похоже чем на скользящее среднее ;) Есть формула или исходник? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 30 июня, 2019 Опубликовано 30 июня, 2019 · Жалоба 1 minute ago, ViKo said: Если сигнал медленный, можно и нужно фильтровать. Сигнал может медленный, но шумный. Да еще и наложится входной шум аналоговой части, АЦП и даже опорника. Дополнительная фильтрация значительно снижает этот шум. А шум не имеет - хрен пойми какой у него спектр в каждом отдельном случае. С таким сигналом отлично справляется скользящее среднее. Давит его на раз-два. 1 minute ago, ViKo said: Но скакать индикатор будет, как ни фильтруй. adnega привел хороший пример с числами 9,9 и 10,1. С подобной фильтрацией шума заметно меньше. А если не жадничать с размером окна, если и будут меняться, но уже не будут так раздражать, как для случая без фильтра. Работает крайне быстро, но жрет ОЗУ. Я вон вообще сделал себе С++ шаблон этого фильтра под любые типы данных и любой размер окна. Сую куда ни попадя. Отлично спасает даже в самых люто фонящих схемах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 30 июня, 2019 Опубликовано 30 июня, 2019 · Жалоба 16 minutes ago, adnega said: По словесному описанию это больше на БИХ похоже чем на скользящее среднее ;) В том-то и дело, что похоже на КИХ, но по соотношению эффективности и производительности для борьбы с шумом этот жалкий КИХ нервно курит в сторонке. Короче, суть простая: нет никакого смысла в каждом отчете суммировать ВСЕ отчеты из всего окна. Поскольку изменяется только первый отчет в окне (выпадает из общей суммы) и последний (добавляется к сумме) Этот факт и используется для оптимизации. В итоге производительность этого фильтра практически не зависит от размера окна. Хранящиеся отчеты никуда не сдвигаются в пределах массива окна, "бегает" только указатель (индекс). Или вы не знали что так можно? ;) Если что, идея не моя. Поэтому смело выкладываю. Quote Есть формула или исходник? Есть - шаблон на C++ под любые типы данных и размер окна. Но отличники с красными дипломами сами могут себе такой же настрочить :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 30 июня, 2019 Опубликовано 30 июня, 2019 · Жалоба 26 минут назад, Forger сказал: Или вы не знали что так можно? ;) С плавающей точкой тоже работает ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 30 июня, 2019 Опубликовано 30 июня, 2019 · Жалоба 1 minute ago, adnega said: С плавающей точкой тоже работает ;) Разумеется. Но использую его очень редко, поскольку в основном входные данные идут целочисленные. Да и места в озу они занимают меньше, чем плавучка. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 30 июня, 2019 Опубликовано 30 июня, 2019 · Жалоба 3 минуты назад, Forger сказал: Разумеется. Что выведет этот код? volatile float x = 0.0f; for(int i = 0; i < 1000000; i++) x += 0.1f; x -= 100000.0f; printf("r = %f\n", x); Неужели 0? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 30 июня, 2019 Опубликовано 30 июня, 2019 · Жалоба 1 час назад, adnega сказал: По словесному описанию это больше на БИХ похоже чем на скользящее среднее ;) Есть формула или исходник? У Лайонса всё это описано, в разделе: Каскадные интеграторы - гребенчатые фильтры (CIC). Конкретно описаны рекурсивные фильтры скользящего среднего в разделе 10.5.1. 1 час назад, Forger сказал: А шум не имеет - хрен пойми какой у него спектр в каждом отдельном случае Нас интересует спектр сигнала, а не шума. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 30 июня, 2019 Опубликовано 30 июня, 2019 · Жалоба 4 minutes ago, ViKo said: Нас интересует спектр сигнала, а не шума. Начхать на спектр сигнала, если последние цифры на табло "пляшут" именно от шума (АЦП, усилителя на входе). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 30 июня, 2019 Опубликовано 30 июня, 2019 · Жалоба 6 минут назад, ViKo сказал: Нас интересует спектр сигнала, а не шума. Какой спектр, если Forger ничего кроме постоянной составляющей не интересует/не знает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 30 июня, 2019 Опубликовано 30 июня, 2019 · Жалоба 31 minutes ago, adnega said: Какой спектр, ... так говорят, когда заканчиваются аргументы. Есть что по теме? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 30 июня, 2019 Опубликовано 30 июня, 2019 · Жалоба 1 минуту назад, Forger сказал: адекватный постам цвет volatile float x = 0.0f; for(int i = 0; i < 1000000; i++) x += 0.1f; x -= 100000.0f; printf("r = %f\n", x); Какой результат? У меня Цитата r = 958.343750 Аттестат средней школы тоже возвращать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться