[an error occurred while processing this directive]
Требуется алгоритм усреднения переменной без использования буфера. Помогите пожалуйста. (знаю, было это в конфе раньше. Искал, но не сложилось)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
Отправлено
allmaker
20 февраля 2003 г. 11:00
Составить ответ
|||
Конференция
|||
Архив
Ответы
Спасибо всем.
—
allmaker
(20.02.2003 15:38,
пустое
)
NewOut = OldOut * (1-k) + Input * k k<=0.5
—
Visitor
(20.02.2003 15:01,
пустое
)
Ответ: Еще раз - Скользящее среднее в виртуальном буфере
—
_Mic
(20.02.2003 12:34, 314 байт)
Ответ: Скользящее среднее в виртуальном буфере
—
_Mic
(20.02.2003 12:32, 317 байт)
А что такое "остаток_от_прошлого_деления" в формуле?
—
Alexandr
(20.02.2003 13:20,
пустое
)
Это пример вредного совета, даваемого человеком, не знающим, что такое "скользящее среднее" ;) Без буфера подсчитать скользящее среднее невозможно. Вопрос только в том, нужно ли реально это спрашивавшему, или можно зля его задачи обойтись IIR?
—
Oldring
(20.02.2003 14:19,
пустое
)
Ответ: Сам ты вредный совет НИЧТО НЕЛЬЗЯ ИЗМЕРИТЬ С АБСОЛЮТНОЙ ТОЧНОСТЬЮ и вся жизнь это поиск компромиса между желанием и возможностью (читай между имеющимися ресурсами и необходимой точностью) У таких теоретиков наверное и деление бывает только точное (без остатка) Это напоминает мне моих заказчиков которые заказывают измерит что либо и когда спрашиваеш их с какой точностью они говорят ТОЧНО и когда узнают что ТОЧНО я не умею то уходят(это в основном врачи и бизнесмены) Извини если был резковат,
—
_Mic
(20.02.2003 16:05,
пустое
)
Тебя опять подвел твой лексикон. Надо спрашивать о допустимой погрешности ;-)
—
Alexandr
(20.02.2003 17:17,
пустое
)
Ответ: Спасибо
—
_Mic
(20.02.2003 17:20,
пустое
)
Речь идет о том, что алгоритм, который ты предложил, не имеет никакого отношения к скользящему среднему, несмотря на твое утверждение.
—
Oldring
(20.02.2003 16:19, 557 байт)
Ответ: Там внизу ты вроде написал для физического буфера длинной N так я сделал то же самое с виртуальным буфером (конечно имеет место снижение точности)
—
_Mic
(20.02.2003 16:47, 892 байт)
Твой "виртуальный буфер" - это и есть как раз запудривание мозгов. Нет никакого буфера. В результате есть просто IIR с некоторыми попытками уменьшить погрешность округления.
—
Oldring
(20.02.2003 17:05, 335 байт)
Ответ:Конечно нет буфера он виртуальный (повторяю радиостации на танках)
—
_Mic
(20.02.2003 17:54,
пустое
)
Ответ: запудривание мозгов говориш ,,, ну ну
—
_Mic
(20.02.2003 17:51,
пустое
)
Именно. Что такое "буфер" - знаю. Что такое "виртуальный буфер" - не знаю. Определите, юноша, это красивое понятие, прежде, чем его использовать.
—
Oldring
(20.02.2003 17:58,
пустое
)
Ответ: а что ЮНОША это твой довод в пользу твоей правоты А ВИРТУАЛЬНЫЙ это как мЕд у Винипуха он вроде есть а на самом деле его нет
—
_Mic
(20.02.2003 18:28,
пустое
)
А четкое определение дать слабо? То-то. Юноша - потому, что люди с законченным высшим образованием и опытом работы обычно так уже не рассуждают, после того, как их на вышке хорошо погоняют.
—
Oldring
(20.02.2003 18:38,
пустое
)
Ответ: Не прячся за высшим образованием и за возрастом - это сомнительные ценности, Похоже тема исчерпала себя Спасибо всем в том числе и критикующим
—
_Mic
(20.02.2003 19:30,
пустое
)
"высшее образование - это сомнительная ценность" - цитата!!!
—
Oldring
(20.02.2003 20:35,
пустое
)
Никакая не ценность. Двое моих друзей-однокурсников работают на рынке. В голове с института ессно уже не осталось ничего.
—
-=Shura=-
(20.02.2003 21:15,
пустое
)
Каждому-своё. У меня много знакомых уехало. Только не говорите, что Ваши знакомые остались работать на рынке, потому что большие патриоты :)
—
Oldring
(21.02.2003 08:58,
пустое
)
Ответ: если разрядность данных 1бит то неучитывая остаток получиш погрешность 100/N % а в 'моем' cлучае до 50%
—
_Mic
(20.02.2003 17:49,
пустое
)
Спрашивающему требуется получать значение АЦП арифметически усредненное с N предыдущими значениями. Получать оное значение требуется после каждого преобразования АЦП.
—
allmaker
(20.02.2003 14:34,
пустое
)
Никакие рекурсии не заменят среднее. Только среднее дает правильныю статистическую оценку измеряемой величины.
—
Alexandr
(20.02.2003 15:12,
пустое
)
А что такое "правильная статистическая оценка"? ;) И почему IIR с большой постоянной времени дает неправильную статистическую оценку?
—
Oldring
(20.02.2003 15:33,
пустое
)
IIR только асимптотически приближаеться к матожиданию и грубее его оценивает по сравнению со средним. В обработке сигналов это важно.
—
Alexandr
(20.02.2003 16:52,
пустое
)
Ну, насколько мне известно, матожидание посчитать невозможно. Можно только оценить с большей или меньшей точностью. (+)
—
Oldring
(20.02.2003 17:16, 183 байт)
Теперь согласен. Но именно времени в обработке сигналов всегда и не хватает.
—
Alexandr
(20.02.2003 17:24,
пустое
)
Т. е. именно скользящее среднее.
—
Oldring
(20.02.2003 15:03, 521 байт)
Дешево и сердито (авторегрессионный фильтр скользящего среднего первого порядка)
—
Ashr
(20.02.2003 15:01, 175 байт)
Черт, сбой какой-то.
—
Ashr
(20.02.2003 15:04, 122 байт)
А вот если в АВР да аппаратный плавающий вычислитель ...
—
allmaker
(20.02.2003 15:14,
пустое
)
да ты что, уважаемый, здесь всё легко целочислится ;О)
—
mse
(20.02.2003 16:08,
пустое
)
Хорошо. byte*0.01 ?
—
allmaker
(20.02.2003 16:59,
пустое
)
Лементарно, Ватсон...
—
mse
(20.02.2003 17:38, 108 байт)
Логично (:())
—
allmaker
(20.02.2003 18:13,
пустое
)
Все гораздо проще. byte * 0.01 == byte, но результат выражает число в сотых :)
—
Oldring
(20.02.2003 17:50,
пустое
)
а если 0.02 - то в пятидесятых ;О)
—
mse
(20.02.2003 18:01,
пустое
)
Конечно. Это все вопрос представления чисел :)
—
Oldring
(20.02.2003 18:03,
пустое
)
Именно такую рекурсию здесь уже два раза предлагали.
—
Alexandr
(20.02.2003 15:06,
пустое
)
Ответ:
—
_Mic
(20.02.2003 14:01, 362 байт)
Какой остаток может быть у целочисленного деления? И вообще у вас получился рекурсивный ВЧ фильтр.
—
Alexandr
(20.02.2003 14:35,
пустое
)
Ответ: 14/3 = 4 а 2 между прочим в остатке
—
_Mic
(20.02.2003 16:25,
пустое
)
Ну и говорил бы деление по модулю, а то остаток. Остаток будет 0,6666....
—
Alexandr
(20.02.2003 16:39,
пустое
)
Уважаемый, что такое остаток, изучают в начальной школе :)
—
Oldring
(20.02.2003 17:06,
пустое
)
ПРошу прощения за два раза: рука дрогнула, вместо того, чтобы удалить, отправил :)
—
Oldring
(20.02.2003 17:08,
пустое
)
Может и логично. Но в обработке сигналов применяют деление в поле рациональных чисел, а не деление яблок.
—
Alexandr
(20.02.2003 17:11,
пустое
)
Ответ: Какое еще поле мы че на картошку выехали прямо
—
_Mic
(20.02.2003 17:43,
пустое
)
То, в котором нет идеалов, кроме тривиальных. Учите, юноша, математику.
—
Oldring
(20.02.2003 17:53,
пустое
)
Ответ: Если ваш идеал поле рациональных чисел то вам ко мне
—
Доктор
(20.02.2003 18:02,
пустое
)
Так как поле не моё, а рациональных чисел, то идеалы в нем тоже мне не принадлежат.
—
Oldring
(20.02.2003 18:21,
пустое
)
Во первых, в поле рациональных чисел ничего точно считать на компьютере невозможно, так как его элементы непредставимы. Во-вторых, определение остатка от этого не изменяется - остатком никогда не называется дробная часть результата деления. Если очень интересно - найду определение в Кнуте.
—
Oldring
(20.02.2003 17:16,
пустое
)
Хорошо. Что же будет остатком при делении дробного (SUMM) на целое (SIZE), как показывает в своей формуле _Mic ?
—
Alexandr
(20.02.2003 17:42,
пустое
)
Почему Вы решили, что summ - дробное?
—
Oldring
(20.02.2003 17:50, 227 байт)
Тогда оригинальная рекурсия получаеться. Вот блок схема фильтра
—
Alexandr
(20.02.2003 18:06,
пустое
,
картинка
)
А вот его частотная характеристика.
—
Alexandr
(20.02.2003 18:09,
пустое
,
картинка
)
Видно, что добавлением остатка коллега похерил остатки здравого смысла в IIR фильтре.
—
Alexandr
(20.02.2003 18:21,
пустое
)
Ответ:И вообще давно бы кинули это дело в Матлаб и весь рассказ
—
_Mic
(20.02.2003 19:50,
пустое
)
Ответ: Alexandr у меня не совсем IIR фильтр (моя оригинальная задача была усреднить 2000 последних отсчетов в проце с 256 байт РАМ и никакой IIR там не развернулся ) Чесное слово я никаким боком не хотел обидеть IIR фильтр а тем более похерить невиновного
—
_Mic
(20.02.2003 19:45,
пустое
)
Сударь, Вы не путаете IIR и FIR?
—
Oldring
(20.02.2003 20:44,
пустое
)
Об АЧХ говорить сложно, так как фильтр нелинейный. При больших числах нелинейность мала, и поэтому характеристика должна быть характеристикой ФНЧ первого порядка.
—
Oldring
(20.02.2003 18:20,
пустое
)
При построении АЧХ я беру не белый шум как принято, а тестирую рядом синусоид с пропуском соответствующего времени установления. Так быстрее получаеться. И есть возможность посмотреть ФЧХ.
—
Alexandr
(20.02.2003 18:26,
пустое
)
Вопрос в амплитуде синусоид. Сделайте их очень большой.
—
Oldring
(20.02.2003 18:40,
пустое
)
Эт можно. Вот АЧХ если сигнал усилить в 1000 раз
—
Alexandr
(20.02.2003 18:48,
пустое
,
картинка
)
Осталось все нарисовать в двойном логарифмическом...
—
Oldring
(20.02.2003 19:00,
пустое
)
Ж8-0
—
Oldring
(20.02.2003 16:55,
пустое
,
ссылка
)
Да...! Школьная математика это отдельный разговор.
—
Alexandr
(20.02.2003 17:03,
пустое
)
Ответ:По моему ты уже мыслиш на С или С++ - ОСТАТОК это нормальное человеческо-математическое понятие
—
_Mic
(20.02.2003 16:51,
пустое
)
В С эта операция обозначается знаком '%' :)))
—
Oldring
(20.02.2003 15:13,
пустое
)
Не, извиняюсь. Знаки перепутал. Получился экспоненциальный НЧ фильтр. (Но все равно рекурсивный)
—
Alexandr
(20.02.2003 14:51,
пустое
,
картинка
)
Ответ: Mx[n+1]=(Mx[n] * n + X[n+1]) /(n+1)
—
Наверноэто
(20.02.2003 11:26,
пустое
)
Нужно скользящее среднее или просто среднее?
—
Ashr
(20.02.2003 11:11,
пустое
)
Извините, поломался инет. Требуется скользящее среднее.
—
allmaker
(20.02.2003 12:32,
пустое
)
В главе 6
—
Avla 0652
(20.02.2003 13:12, 88 байт,
ссылка
)
Хотя нет, буфер конечно понадобится, но вычислений минимум будет.
—
Avla 0652
(20.02.2003 13:14, 17 байт)
Спасибо, бысто и коротко.
—
allmaker
(20.02.2003 14:41,
пустое
)
Но это IMXO и есть тот самый вариант (а = СУМ(х0...хN)/N)
—
allmaker
(20.02.2003 14:45,
пустое
)
Ну да, конечно. Просто алгоритм оптимизирован так, что всю сумму считать не надо.
—
Avla 0652
(20.02.2003 15:02,
пустое
)
Ответ: y[i]=a*y[i-1]+b*x, где a+b=1; y-выход; x-вход
—
CTAC
(20.02.2003 11:06,
пустое
)
А какой физический смысл в а и б? Как их выбирать?
—
allmaker
(20.02.2003 11:11,
пустое
)
Ответ: Так получится фильтр первого порядка, и
—
CTAC
(20.02.2003 11:20, 60 байт)
1690 циклов в IAR C под AVR .....
—
allmaker
(20.02.2003 13:09,
пустое
)
;О) в АСМе будет не больше сотни-другой
—
mse
(20.02.2003 13:48,
пустое
)
Если нужна скорость, я делал так:
—
CTAC
(20.02.2003 13:47, 263 байт)
Ответ: про (n-1) наврал, давно было, не помню
—
CTAC
(20.02.2003 13:54,
пустое
)
Если не сложно, что есть степень двойки? Смысл?
—
allmaker
(20.02.2003 14:08,
пустое
)
Ответ: Степень двойки - чтоб сдвигать, а не делить, а смысл - постоянная времени фильтра. Промоделируй, сам увидишь
—
CTAC
(20.02.2003 15:22,
пустое
)
Я уже въехал, спасибо.
—
allmaker
(20.02.2003 15:35,
пустое
)
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание
|||
Без кадра
E-mail:
info@telesys.ru