The mapLayer
Объект позволяет применять пользовательские поэлементные преобразования при установке и получении данных на карте. Чтобы преобразовать данные, которые вы задаете или получаете с карты, задайте указатели на функцию для GetTransfomFcn
и SetTransformFcn
свойства. Этот пример показывает, как реализовать слой вероятностной карты логарифмических коэффициентов путем создания интерполяционной таблицы для значений вероятностей и логарифмических коэффициентов. Функции преобразования используют эти интерполяционные таблицы, чтобы преобразовать между этими значениями при настройке или получении данных.
Создание интерполяционных таблиц
Сгенерируйте полную интерполяционную таблицу значений, которые сопоставляют значения вероятностей с минимальными и максимальными пределами int16
значения.
Создайте массив int16
значения из intmin
на intmax
. Задайте пределы вероятности.
The exampleHelperProbToLogodds
и examplerHelperLogoddsToProb
функции скрыты между логарифмическими шансами и значениями вероятностей. Используйте вспомогательные функции, чтобы получить пределы логарифмических коэффициентов и сгенерировать массив для поиска значений логарифмических коэффициентов. Создайте интерполированную сетку для всей интерполяционной таблицы.
Задайте указатели на функции преобразования
Указатели на функцию преобразования используют помощники примера, которые определяют, как преобразовать между целочисленными значениями логарифмических коэффициентов и значениями вероятностей с приложенным пределом насыщения. Пределы насыщения вероятностей [0.001 .999]
как указано ранее. Это поведение похоже на occupancyMap
объект.
Создайте слой карты
Сгенерируйте объект слоя карты заполнения из матрицы значений вероятностей. Задайте функции get и set transform.
Заметьте, что при создании карты значение по умолчанию является 0,001 вместо 0. Это различие связано с тем, что SetTransformFcn
функция была применена к значению по умолчанию 0 при создании объекта, который достигает 0,001.
Получите и установите данные карты
Данные карты совпадают с матрицей, установленной при создании.
extData = 10×10
0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000
0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000
0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000
0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000
0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000
0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000
0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000
0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000
0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000
0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000 0.5000
Установите определенные местоположения сопоставления для значений, которые:
За пределами пределов вероятностного насыщения.
Более высокая точность, чем разрешение интерполяционных таблиц.
Для первого местоположения вероятность связана с пределами насыщения.
Второе расположение возвращает значение, ближайшее к значению вероятности в интерполяционной таблице.
Сгенерированный слой карты теперь может использоваться для обновления вероятности, занимаемой любой картой, которая сохранена как int16
значения. Чтобы объединить эту карту с другими слоями или типами карт, смотрите multiLayerMap
объект.