[an error occurred while processing this directive]
|
for( /*each sample*/ )
{
/* adjust gain of input signal */
out=in*gain;/* calculate error betwen current sample and setpoint */
error=SET_POINT-abs(out)/* adjust gain based on error, integrator */
gain = gain+SPEED*error
}
SET_POINT - значение куда надо приводить сигнал
SPEED - скорость адаптации гейна
Было бы неплохо заменить интегратор low-pass фильтром,
но жрать будет больше. Можно попробовать системы выше первого
порядка, но это уже для любителей экстрима
Почитать можно теорию линейных систем, теорию автоматического управления, теорию систем с обратной связью, в общем чтения Вам на несколько лет хватит.
E-mail: info@telesys.ru