mapLayer
объект позволяет вам применить пользовательские поэлементные преобразования при установке и получении данных в карте. Чтобы преобразовать данные, вы устанавливаете или добираетесь из карты, задаете указатели на функцию для GetTransfomFcn
и SetTransformFcn
свойства. В этом примере показано, как реализовать, логарифмические разногласия probabilitistic сопоставляют слой путем создания интерполяционной таблицы для значений логарифмических разногласий и вероятности. Функции преобразования используют эти интерполяционные таблицы, чтобы преобразовать между этими значениями при установке или получении данных.
Создайте интерполяционные таблицы
Сгенерируйте полную интерполяционную таблицу значений, которые сопоставляют значения вероятности с минимальными и максимальными пределами int16
значения.
Создайте массив int16
значения от intmin
к intmax
. Задайте пределы probablilty.
exampleHelperProbToLogodds
и examplerHelperLogoddsToProb
функции, тайные между логарифмическими разногласиями и значениями вероятности. Используйте функции помощника, чтобы получить пределы логарифмических разногласий и сгенерировать массив для поиска значений логарифмических разногласий. Создайте интерполированную сетку для целой интерполяционной таблицы.
Задайте преобразовывают Указатели на функции
Указатели на функцию преобразования используют помощников в качестве примера, которые задают, как преобразовать между целочисленными значениями логарифмических разногласий и значениями вероятности с прикладным пределом насыщения. Пределами насыщения вероятности является [0.001 .999]
как ранее заданный. Это поведение похоже на occupancyMap
объект.
Создайте слой карты
Сгенерируйте расположенный на слое объект карты заполнения из матрицы значений вероятности. Задайте получать и установите, преобразовывают функции.
Заметьте, что, когда вы создаете карту, значение по умолчанию 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
Установите определенные местоположения карты на значения, которые являются:
За пределами пределов насыщения вероятности.
Более высокая точность, чем разрешение интерполяционных таблиц.
Для первого местоположения вероятность связана с пределами насыщения.
Второе местоположение возвращает значение, самое близкое к значению вероятности в интерполяционной таблице.
Сгенерированный слой карты может теперь использоваться для обновления вероятности occupany карта, которые хранятся как int16
значения. Чтобы объединить эту карту с другими слоями или типами карты, смотрите multiLayerMap
объект.