MATLAB Answers

Retrieving an array of values for an array of keys from a containers.map object

12 views (last 30 days)
Joanne
Joanne on 28 Sep 2011
My code uses a containers.map object smap. I currently have the following inside a loop with over 6 million iterations:
val(i) = smap(key(i))
I'd like to take it out of the loop to make it faster - I can make a cell array of the (string) keys called keyList, and I tried
val_arr = cellfun(@(x), smap(x), keyList, 'UniformOutput', 'false')
which works but is actually a few seconds slower than just calling it inside the loop. Can you suggest how I might do this faster?

  0 Comments

Sign in to comment.

Answers (1)

Walter Roberson
Walter Roberson on 28 Sep 2011
val_arr = cellfun(@(x), smap(x), keyList, 'UniformOutput', 'false')
is a syntax error, as it has no function body for the anonymous function.
If you remove the comma after @(x) then it becomes valid.

  1 Comment

Joanne
Joanne on 28 Sep 2011
Sorry, that was a typing-from-memory error on my part (I don't have the code with me). The function _did_ work, but was slower. Pretend I wrote:
val_arr = cellfun(@(x) smap(x), keyList, 'UniformOutput', 'false')

Sign in to comment.