[an error occurred while processing this directive]
Ответ: (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено SM 01 апреля 2003 г. 12:59
В ответ на: Ответ: отправлено ВМФ 01 апреля 2003 г. 12:32

++++++++++++++++++++++++++
Задача такая: есть режим калибровки, в котором надо вычислить коэффициенты, и есть режим измерения, когда их надо использовать.
Как я понимаю надо вычислить коэффициенты a, b, c по уравнениям полученым в 3х точках:
y1=a(x1*x1)+bx1+c
y2=a(x2*x2)+bx2+c
y3=a(x3*x3)+bx3+c
и по ним вычислять Yn по измеренному Xn?
++++++++++++++++++++++++++

Задача немного упрощается, так как нет необхомисти дополнительного пересчета. Имеем на входе допустим N пар значений (x(1),y(1)) ... (x(N), y(N)). Где x(n) - это результат калибровочного измерения в точке n, а y(n) - реальное значение для измеренного сигнала.

рассчитываем коррекцию (один раз после калибровки).
1. Надо отсортировать эти пары так, чтобы x(n)<=x(n+1) для любого n на отрезке 1<=n<=N
2. Построить интерполяционные полиномы для всех отрезков между парами, с условиями прохождения через все точки x(n), y(n). Это выливается в решение линейной системы уравнений. И зависит от выбранного метода интерполяции. Основные проблемы вызывают начальная и конечная точки - так как для них нельзя саппроксимировать производную - ее желательно задать в явном виде. Тут опять-же есть несколько вариантов - самый простой принять там ее за ноль или какую-то другую константу. Есть довольно интересный и простой метод - сплайн Катмулла-Рома (находится гуглем). Но он требует одинакового расстояния между всеми X-ами.
3а. Если проц сильный - то теперь на лету находим для каждого измеренного X скорректированный Y сначала най.

3б. (если проц слабомощный) После того, как сплайн рассчитан, строим на его основе таблицу линейной интерполяции. Для этого разбиваем весь интервал значений измерений на M отрезков, где M>>N. Вычисляем для каждого X'(k) по результатам кубической интерполяции свой Y'(k). Получаем M пар значений (X', Y'), где считаем что точности линейной интерполяции хватит.

4.(если проц слабомощный) Берем z - это измеренная величина. Находим такое k, что z>=X'(k) и z<=X'(k+1). Рассчитываем по той формуле, что я давал (линейная интерполяция). Z = (Y'(k+1)-Y'(k))*(z-X'(k)) + Y'(k). Все - этот Z есть скорректированное значение.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru