# What is the best data structure for mapping a key to an array of values in MATLAB?

50 Ansichten (letzte 30 Tage)
Tej am 22 Mai 2024 um 19:20
Bearbeitet: Matt J am 23 Mai 2024 um 1:25
I am facing an issue with which data structure to use and when. My use case involves unique keys, each of which will be mapped to an array of values.
'UniqueKey1' -> ['Value1', 'Value2', 1, 2, true];
'UniqueKey2' -> ['Value2', 'Value3', 2, 5, false];
'UniqueKey3' -> ['Value3', 'Value4', 5, 5, true];
I know Struct could be one of the options, but I am worried about the performance when the data size is large (more than 100 rows). Can someone recommend a better alternative in my case?
##### 0 Kommentare-2 ältere Kommentare anzeigen-2 ältere Kommentare ausblenden

Melden Sie sich an, um zu kommentieren.

### Akzeptierte Antwort

Matt J am 22 Mai 2024 um 20:11
Bearbeitet: Matt J am 22 Mai 2024 um 20:37
Dictionaries are supposed to be faster than structs, but they require a recent Matlab version.
keys="UniqueKey"+(1:3)';
values={ {'Value1', 'Value2', 1, 2, true };
{'Value2', 'Value3', 2, 5, false};
{'Value3', 'Value4', 5, 5, true}};
d=dictionary(keys,values)
d = dictionary (string --> cell) with 3 entries: "UniqueKey1" --> {1x5 cell} "UniqueKey2" --> {1x5 cell} "UniqueKey3" --> {1x5 cell}
d{"UniqueKey2"}
ans = 1x5 cell array
{'Value2'} {'Value3'} {[2]} {[5]} {[0]}
##### 5 Kommentare3 ältere Kommentare anzeigen3 ältere Kommentare ausblenden
Paul am 23 Mai 2024 um 0:42
Try changing to:
d = dictionary;
d = insert(d, 'key1' , { {'Value1', 'Value2', 1, 2, true} } )
d = dictionary (string --> cell) with 1 entry: "key1" --> {1x5 cell}
Matt J am 23 Mai 2024 um 1:23
Bearbeitet: Matt J am 23 Mai 2024 um 1:25
You can also add new keys by direct assignment,
d = dictionary('key1',{10}, 'key2',{20})
d = dictionary (string --> cell) with 2 entries: "key1" --> {[10]} "key2" --> {[20]}
d{"key3"}={'Value1', 'Value2', 1, 2, true}
d = dictionary (string --> cell) with 3 entries: "key1" --> {[10]} "key2" --> {[20]} "key3" --> {1x5 cell}

Melden Sie sich an, um zu kommentieren.

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by