我想在MATLAB中将字符串与数字关联起来。也就是说,我想创建一个对象,它的形式如下:
事实上,我需要能够在提供字符串(例如“ abcd”)时搜索对象,并使其返回相关的(唯一)索引,在此示例中为1。我还需要能够使用索引搜索对象并使其返回关联字符串。新元素将需要相当频繁地添加到此对象中。此对象中将有许多元素(约为500000)。这些字符串本身通常不是“有序”的(即使这样做是否有帮助也不知道)。
问题:在MATLAB中最快的方法是什么?
string: 'abcd', index: 1
string: 'abdd', index: 2
etc.
事实上,我需要能够在提供字符串(例如“ abcd”)时搜索对象,并使其返回相关的(唯一)索引,在此示例中为1。我还需要能够使用索引搜索对象并使其返回关联字符串。新元素将需要相当频繁地添加到此对象中。此对象中将有许多元素(约为500000)。这些字符串本身通常不是“有序”的(即使这样做是否有帮助也不知道)。
问题:在MATLAB中最快的方法是什么?
我尝试过的方法:似乎MATLAB中的Map类是相关的;然而,我无法弄清楚如何在两个方向上进行搜索。我的意思可以用Mathworks网站上提供的以下示例来说明:
ticketMap = containers.Map(...
{'2R175', 'B7398', 'A479GY', 'NZ1452'}, ...
{'James Enright', 'Carl Haynes', 'Sarah Latham', ...
'Bradley Reid'});
ticketMap('2R175') -> returns James Enright
但似乎不支持在另一个方向上进行搜索,也就是说,给定“James Enright”,无法返回“2R175”。我还尝试了Map2代码(http://www.mathworks.com/matlabcentral/fileexchange/40323-map2-enhanced-map-class),但速度非常慢。
ismember
在单元数组中进行搜索。 - Cecilia