student - ¿Cómo usar Hash Tables(diccionarios) en MATLAB?
matlab tutorial (2)
Necesito acceder a los datos por índice de cadena, como tabla (''uno'')% devuelve 1 . ¿Existe tal estructura de datos en MATLAB? ¿Cómo se implementa?
En versiones recientes de MATLAB, está la estructura de datos containers.Map
. Vea los contenedores de MATLAB Map para más. Esto elimina algunas de las restricciones al usar STRUCTs. Por ejemplo
c = containers.Map
c(''foo'') = 1
c('' not a var name '') = 2
keys(c)
values(c)
Una estructura puede usarse como una especie de tabla hash:
>> foo.(''one'')=1
foo =
one: 1
>> foo.(''two'')=2;
>> x = ''two'';
>> foo.(x)
ans =
2
Para consultar si una estructura contiene un campo particular (clave), use isfield
:
>> isfield(foo,''two'')
ans =
1
La desventaja de este esquema es que solo las cadenas que también son nombres válidos de las variables de Matlab se pueden usar como claves. Por ejemplo:
>> foo.(''_bar'')=99;
??? Invalid field name: ''_bar''.
Para evitar esta restricción, use una de las soluciones en la pregunta vinculada por Oli.