Быстрые ассоциативные массивы или карты в Matlab - PullRequest
5 голосов
/ 21 января 2011

Мне нужно построить fast отображение один-к-одному между двумя большими массивами целых чисел в Matlab. Отображение должно принимать в качестве входных данных элемент из заранее определенного массива, например ::10000

in_range    = [-200   2  56   45 ... ];

и сопоставьте его по индексу в предыдущем массиве с соответствующим элементом из другого предварительно определенного массива, например ::

out_range   = [-10000 0  97   600 ... ];

Например, в приведенном выше случае my_map(-200) должно выдавать -10000, а my_map(45) должно выводить 600.

Мне нужно решение, которое

  1. Может сравнительно эффективно отображать очень большие массивы (~ 100 тыс. Элементов).
  2. Хорошо масштабируется с границами in_range и out_range (т.е. их значения min и max)

До сих пор я решил эту проблему, используя внешний интерфейс Matlab для Java с HashMaps Java , но мне было интересно, существует ли альтернатива Matlab-native.

Спасибо!

1 Ответ

4 голосов
/ 21 января 2011

Последние версии Matlab имеют хешей .Я использую 2007b, а они недоступны, поэтому я использую struct всякий раз, когда мне нужен хеш.Просто преобразуйте целые числа в допустимые имена полей с genvarname .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...