|
|
  |
Как внести иннерционность в измерение? |
|
|
|
Dec 2 2008, 21:17
|

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

|
Цитата(hwdev @ Dec 2 2008, 22:11)  ...Дайте, пожалуйста, ссылку на теорию с примерами или сюда напишите готовый код. Спасибо! Простейшая адаптивная система: *X_n) , где  - выходные отсчёты;  - входные отсчёты (измерения);  - константа адаптации.
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Dec 3 2008, 10:17
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(hwdev @ Dec 2 2008, 23:11)  или сюда напишите готовый код. Паскаль устроит? Код Function TempQuick(mVolt,K:integer):integer;
var LI:longint; Temp1:integer; begin //рассчитали Temp1:=....
//положили в буфер TempBuf[TempBufIndex]:=Temp1;
//изменили индекс Inc(TempBufIndex); If TempBufIndex>TempBufSize then begin TempBufIndex:=1; TempBufReady:=True; end; //сложили буфер LI:=0; If TempBufReady then EndIndex:=tempBufSize else EndIndex:=TempBufIndex-1; FOr MyBufIndex:=1 to EndIndex DO LI:=LI + TempBuf[MyBufIndex]; If LI<0 then LI:=0; //поделили на количество элементов LI:=LI div EndIndex; //вернули TempQuick:=Integer(LI); end;
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Dec 3 2008, 11:19
|
Участник

Группа: Новичок
Сообщений: 47
Регистрация: 7-05-07
Пользователь №: 27 573

|
А что такое К в данном примере ? Или это какой-то доп параметр, "не имеющий отношения к делу" ? И не будет ли прыгать значение от того, что периодически (при сбросе индекса) за среднее значение берем только что измеренное ? Или я чего-то не догоняю ?
|
|
|
|
|
Dec 4 2008, 07:11
|

Профессионал
    
Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357

|
Цитата(Stanislav @ Dec 3 2008, 00:17)  Простейшая адаптивная система: *X_n) , где  - выходные отсчёты;  - входные отсчёты (измерения);  - константа адаптации. А почему >0.5? Можно и меньше, нужно лишь, чтобы этот коэффициент был больше нуля. В программе эта формула кодируется так: y += (xn - y)*alpha; правда, в этом случае альфа приобретает иной смысл - чем она меньше, тем сильнее сглаживание, при 1 сглаживание полностью отсутствует. Можно даже вычслить этот коэффициент, если известна требуемая постоянная времени ) , где  - период следования входных отсчётов;  - требуемая постоянная фильтра в секундах. Эта формула реализует цифровой аналог RC-цепочки с постоянной времени  ,
Сообщение отредактировал 777777 - Dec 4 2008, 07:37
|
|
|
|
|
Dec 4 2008, 07:42
|

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

|
Цитата(777777 @ Dec 4 2008, 10:11)  А почему >0.5? Можно и меньше, нужно лишь, чтобы этот коэффициент был больше нуля. Чтобы было хоть какое-нить сглаживание. Можно и меньше, но это не имеет смысла. Вообще, обычно выбирают в районе 0,9 и больше. Цитата(777777 @ Dec 4 2008, 10:11)  ...В программе эта формула кодируется так:
y += (xn - y)*alpha;
правда, в этом случае альфа приобретает иной смысл - чем она меньше, тем сильнее сглаживание, при 1 сглаживание полностью отсутствует. Ну да, то же самое. Кстати, забыл написать. Инициализировать адаптивную систему можно так:  , т.е., выбрать в качестве начального приближения первый же входной отсчёт, а потом уже усреднять. Иначе долго ждать придётся.
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Dec 4 2008, 15:40
|
Местный
  
Группа: Свой
Сообщений: 334
Регистрация: 1-09-06
Из: Москва
Пользователь №: 20 008

|
Цитата(Stanislav @ Dec 4 2008, 10:42)  Чтобы было хоть какое-нить сглаживание. Можно и меньше, но это не имеет смысла. Вообще, обычно выбирают в районе 0,9 и больше. Ну да, то же самое. Кстати, забыл написать. Инициализировать адаптивную систему можно так:  , т.е., выбрать в качестве начального приближения первый же входной отсчёт, а потом уже усреднять. Иначе долго ждать придётся.  Спасибо! Буду применять. А как этот алгоритм переделать в целые числа? Алгоритм всё таки на контроллере будет крутиться, не пентиум
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|