Pull to refresh

Опыт аппроксимации экспериментальных данных

Reading time 2 min
Views 6.5K
На днях встала задача запрограммировать устройство для измерения скорости потока воздуха. В качестве измеряющего элемента — датчик не понятно какого производителя, нет ни характеристик ни каких-либо адекватных параметров. Выбора не было, пришлось снимать градуировочные характеристики и выводить передаточную функцию «отсчеты АЦП-поток».

Поскольку датчик, как и практически любое средство измерения, очень чувствителен к температуре то мне необходимо было снять семейство характеристик (минимум 3) для разных температур.
Данные можно занести в MathCad разными способами, я предпочел это сделать в виде транспонированных векторов-строк:

После этого нужно «волевым» решением задать вид аппроксимирующей функции и произвести аппроксимацию каждой градуировочной характеристики. Так, мои характеристики удачно аппроксимируются полиномом третьей степени, воспользовавшись функцией linfit, которая ищет решение в виде линейных комбинаций произвольных функций, я получил коэффициенты для трех полиномов:

Чтобы посмотреть насколько «удачно» экспериментальные данные моделируются полученным полиномом можно построить график:

Теперь, чтобы ввести поправку по температуре, нужно найти зависимость каждого из коэффициентов полинома от температуры, т.е. проделать всё вышеописанное только для коэффициентов. В роли экспериментальных данных теперь будут сами коэффициенты и значения температуры. Мне очень хотелось, что зависимость от температуры была линейной, возможно использование функции linfit излишне для линейной апроксимации, но все же:

Наконец желаемая зависимость предстает в следующем виде:

Комментируя результат, отмечу, что получилось не очень удачно, говоря откровенно отвратительно. Характеристики были изначально плохо сняты, сказалось отсутствие нормального стенда. Да и вообще задача калибровки далеко не дилетантская, «на коленке» ее не сделаешь. Но мне хотелось рассказать про подход.
Tags:
Hubs:
+1
Comments 4
Comments Comments 4

Articles