реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Алгоритм усреднения без деления
Newegor
сообщение Apr 23 2007, 10:20
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 2-03-06
Из: Минск
Пользователь №: 14 879



Подскажите алгоритм усреднения величины во времени без деления. 12 бит получаю с АЦП.
Go to the top of the page
 
+Quote Post
VAI
сообщение Apr 23 2007, 10:43
Сообщение #2


Профессионал
*****

Группа: Модераторы
Сообщений: 1 120
Регистрация: 17-06-04
Пользователь №: 37



http://www.may.nnov.ru/mak/DSP/chEMA.shtml
Но я в double всё считаю.


--------------------
Если зайца бить, его можно и спички научить зажигать
Сколько дурака не бей - умнее не будет. Зато опытнее
Go to the top of the page
 
+Quote Post
fontp
сообщение Apr 23 2007, 10:44
Сообщение #3


Эксперт
*****

Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183



Скользящее среднее? Это CIC-фильтр порядка 1. По СIC-фильтрам много ссылок в сети

Экспоненциальное усреднение тоже годится
Go to the top of the page
 
+Quote Post
DRUID3
сообщение Apr 23 2007, 10:49
Сообщение #4


山伏
*****

Группа: Свой
Сообщений: 1 827
Регистрация: 3-08-06
Из: Kyyiv
Пользователь №: 19 294



Ну да, ага... среднее smile.gif Уж скорее скользящая медиана.


--------------------
Нас помнят пока мы мешаем другим...
//--------------------------------------------------------
Хороший блатной - мертвый...
//--------------------------------------------------------
Нет старик, это те дроиды которых я ищу...
Go to the top of the page
 
+Quote Post
slog
сообщение Apr 23 2007, 10:49
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 961
Регистрация: 28-11-05
Пользователь №: 11 489



Если делить на 2-4-8-16... то это просто сдвиги вправо.


--------------------
В действительности всё не так, как на самом деле.
Go to the top of the page
 
+Quote Post
fontp
сообщение Apr 23 2007, 10:55
Сообщение #6


Эксперт
*****

Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183



Цитата(DRUID3 @ Apr 23 2007, 11:49) *
Ну да, ага... среднее smile.gif Уж скорее скользящая медиана.



Хорошо бы, если б медиана :-) Для CIC-фильтра нормировка остаётся проблемой, но окно обычно есть N=2^n, так что это не беда. При аппаратной реализации берутся старшие разряды, при программной - сдвиг. Ну если окно кривое - можно в крайнем случае умножать на нормировочную константу 1/N
Где деление? :-)
Go to the top of the page
 
+Quote Post
=GM=
сообщение Apr 23 2007, 16:00
Сообщение #7


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(Newegor @ Apr 23 2007, 06:20) *
Подскажите алгоритм усреднения величины во времени без деления. 12 бит получаю с АЦП.

Складываете 256 величин, при чтении результата игнорируете младший байт. Если усредняете на ДСП, то складываете 2^n раз, результат при чтении сдвигаете одной командой на n бит вправо.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
mse
сообщение Apr 23 2007, 16:03
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693



Без делення...А с умножением на 0х10000/N, например, покатит? ;О)
Go to the top of the page
 
+Quote Post
fontp
сообщение Apr 24 2007, 10:12
Сообщение #9


Эксперт
*****

Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183



Цитата(mse @ Apr 23 2007, 17:03) *
Без делення...А с умножением на 0х10000/N, например, покатит? ;О)


Если мыслить в фикспойнте 15.1, то умножать очевидно нужно на 32768/N. Это если накопляемая сумма всё-таки укладывается в 16 разрядов. Если даже не укладывается, в любом случае деление на константу делением не является :-) Существуют трюки для программистов

Фильтр Хогенауэра (CIC) первого порядка это просто фильтр
S(n) = S(n-1) + X(n) - X(n-N)
Для целочисленных вычислений он абсолютно устойчив, поскольку отсутствует источник шума округления. Для float он на границе устоячивости и будет медленно расходиться
Go to the top of the page
 
+Quote Post
v_shamaev
сообщение Apr 24 2007, 12:35
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 304
Регистрация: 5-07-04
Из: г. Москва
Пользователь №: 259



Цитата(Newegor @ Apr 23 2007, 11:20) *
Подскажите алгоритм усреднения величины во времени без деления. 12 бит получаю с АЦП.

Для простых случаев - к запомненному значению прибавляется текущее измеренное, результат сдвигается вправо на один разряд (т.е. получается деление на два) и запоминается.


--------------------
Водку пьянствовать и безобразия нарушать!!!
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th June 2025 - 14:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01729 секунд с 7
ELECTRONIX ©2004-2016