2011-01-21 14 views
5

que necesitan para construir un mapeo rápido uno-a-uno entre dos grandes conjuntos de números enteros en Matlab. El mapeo debe tomar como entrada un elemento de una matriz predefinida, por ejemplo:matrices asociativas rápido o mapas en Matlab

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

y asignarla, por su índice en la matriz anterior, para el elemento correspondiente de otra matriz pre-definido, por ejemplo:

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

Por ejemplo, en el caso anterior, my_map(-200) debe ser la salida -10000, y my_map(45) debe ser la salida 600.

que necesitan una solución que

  1. puede asignar matrices muy grandes (~ 100K) elementos relativamente eficiente.
  2. Escalas bien con los límites de in_range y out_range (es decir, sus min y max valores)

Hasta ahora, he resuelto este problema mediante la interfaz externa de Matlab para Java con HashMaps de Java, pero me preguntaba si hubiera una alternativa nativa de Matlab

Gracias!

+0

posible duplicado de [tablas hash en Matlab] (http://stackoverflow.com/questions/3591942/hash-tables-in-matlab) – Jonas

+1

Las respuestas al duplicado (que no sean las mías) le dicen todo lo que necesita para saber. – Jonas

Respuesta

4

Las últimas versiones de Matlab tienen hashes. Estoy usando 2007b y no están disponibles, entonces uso structs cada vez que necesito un hash. Simplemente convierta los enteros en nombres de campo válidos con genvarname.

Cuestiones relacionadas