MATLAB Answers

containers.Map keys value not match

22 views (last 30 days)
Safwana Razak
Safwana Razak on 8 Nov 2019
Commented: Walter Roberson on 11 Nov 2019
i try using containers.Map function to automate my table value into certain keys but end end up with this error:
"Specified key type does not match the type expected for this container."
i refer back my code, the data for key data is correct data type. anyone can assist me how to solve this problem?
here i attach my code:
labelMap = containers.Map('KeyType','double','ValueType','char');
keySet = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
valueSet = {'air_conditioner','car_horn','children_playing','dog_bark','drilling','engine_idling','gun_shot','jackhammer','siren','street_music'};
labelMap = containers.Map(keySet,valueSet);
current_class = reference_table(strcmp(reference_table.fsID, PCG.filename), :).classID;
feature_table.class = {labelMap(current_class)};
Safwana Razak
Safwana Razak on 11 Nov 2019
my output should be keyset value, 0 or 1 or 2 and so on. i try to do classification actually.

Sign in to comment.

Answers (1)

Walter Roberson
Walter Roberson on 9 Nov 2019
Edited: Walter Roberson on 11 Nov 2019
We can suspect strongly from your use of {} around the call to labelMap that you are expecting current_class to be a vector, and expecting the call to labelMap to return a comma separated list, that you would then capture all of in the {} .
However, you defined the key as scalar, not as vector, and passing a vector key in where a scalar key is expected is going to get you exactly that error message.
You should instead use
feature_table.class = arrayfun(@(C) labelMap(C), current_class, 'uniform', 0);
Walter Roberson
Walter Roberson on 11 Nov 2019
Your current_class is returning a non-scalar under at least one condition. There might not be a match, or there might be multiple matches.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!

Translated by