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

 
 
 
Reply to this topicStart new topic
> Усреднение на 8
bezobraznic
сообщение Apr 14 2006, 21:46
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 169
Регистрация: 26-05-05
Пользователь №: 5 441



Подскажите самый оптимальный алгоритм усреднения на 8.
Go to the top of the page
 
+Quote Post
M_A
сообщение Apr 15 2006, 00:33
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 153
Регистрация: 27-12-04
Из: г. Иркутск
Пользователь №: 1 689



Хм, что такое усреднение на 8?
Я сначала подумал на свою математическую некомпетентность, залез в гугля, набрал усреднение на 8 в кавычках и не получил ни одного результата! так что я думаю не один я не слыхал такого термина smile.gif , так что хотите получить грамотный ответ, пишите грамотный развернутый со всеми возможными подробностями вопрос!
Go to the top of the page
 
+Quote Post
uriy
сообщение Apr 15 2006, 05:34
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Я так понимаю предполагается находить среднее значение восьми отсчетов?
1) можно предварительно поделить каждый отсчет на 8 (проще это сделать сдвигом вправо на 3 бита), а затем сложить эти отсчеты. При таком способе низкая точность, т.к. 3 младших бита теряются.
2) складываем 8 отсчетов и делим сумму на 8 (можно тем же сдвигом на 3 бита). Точность выше, но придется вести арифметику с двнойной точностью.
Go to the top of the page
 
+Quote Post
defunct
сообщение Apr 15 2006, 11:00
Сообщение #4


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



(x0+x1+...x7) shr 3
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Apr 15 2006, 13:34
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(defunct @ Apr 15 2006, 15:00) *
(x0+x1+...x7) shr 3
(x0+x1+...x7+4) asr 3


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
lazycamel
сообщение Apr 15 2006, 18:51
Сообщение #6


Участник
*

Группа: Свой
Сообщений: 48
Регистрация: 5-11-04
Пользователь №: 1 053



Если я правильно понял вопрос.

(x0+x1>>1+x2>>2+....x7>>7)>>1

подобную фигню повторять на каждом отсчете.

соответсвенно задержка - 8 отсчетот со старта преобразований.
Go to the top of the page
 
+Quote Post
WHALE
сообщение Apr 15 2006, 20:41
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768



я так понял,речь идет о усреднении 8 отсчетов ацп.Ну и причем здесь задержка отсчетов-можно сделать так:
define buffer_adc_size 8;
int buffer_adc[buffer_adc_size];
char count_adc_measuring;
п/п снятия отсчета:
if(count_adc_measuring<buffer_adc_size) buffer_adc[count_adc_measuring++]=ADCW;
else {
count_adc_measuring=0;
ваша функция усреднения
}
время преобразования не рекомендуется задавать менее 50мкс,чего с избытком хватит на эту обработ-
ку,так что насчет задержки на 8 отсчетов вы не правы.


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
_artem_
сообщение Apr 15 2006, 20:41
Сообщение #8


учащийся
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 29-10-05
Из: города контрастов
Пользователь №: 10 249



можно вычисление убыстрить до двух арифметических операций (не считая округления рекоммендуемого Станиславом, кстати был бы признателен если бы он обосновал необходимость оного) если при приеме нового осчета к старой сумме добавлять новый отсчет и вычесть предыдуший восьмой - 2 против 8 не считая шифта/деления на 8.


--------------------
Зачем лаять на караван , когда на него можно плюнуть?

Go to the top of the page
 
+Quote Post
Stanislav
сообщение Apr 15 2006, 21:45
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(_artem_ @ Apr 16 2006, 00:41) *
можно вычисление убыстрить до двух арифметических операций (не считая округления рекоммендуемого Станиславом, кстати был бы признателен если бы он обосновал необходимость оного) если при приеме нового осчета к старой сумме добавлять новый отсчет и вычесть предыдуший восьмой - 2 против 8 не считая шифта/деления на 8.
Это верно только при оценке "скользящего" среднего.
Округление я предложил, исходя из практических соображений. При усечении разрядов получим макс. ошибку 7/8 ЕМР, а также смещение оценки среднего на 7/16 ЕМР. При округлении имеем макс. ошибку 1/2 ЕМР и смещение на 1/16 ЕМР. Можно также сделать несмещённое округление, но это несколько сложнее.


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
_artem_
сообщение Apr 16 2006, 16:13
Сообщение #10


учащийся
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 29-10-05
Из: города контрастов
Пользователь №: 10 249



Цитата(Stanislav @ Apr 16 2006, 00:45) *
Цитата(_artem_ @ Apr 16 2006, 00:41) *
можно вычисление убыстрить до двух арифметических операций (не считая округления рекоммендуемого Станиславом, кстати был бы признателен если бы он обосновал необходимость оного) если при приеме нового осчета к старой сумме добавлять новый отсчет и вычесть предыдуший восьмой - 2 против 8 не считая шифта/деления на 8.
Это верно только при оценке "скользящего" среднего.
Округление я предложил, исходя из практических соображений. При усечении разрядов получим макс. ошибку 7/8 ЕМР, а также смещение оценки среднего на 7/16 ЕМР. При округлении имеем макс. ошибку 1/2 ЕМР и смещение на 1/16 ЕМР. Можно также сделать несмещённое округление, но это несколько сложнее.


OK, spasibo.


--------------------
Зачем лаять на караван , когда на него можно плюнуть?

Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 12th July 2025 - 08:07
Рейтинг@Mail.ru


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