containers.Map keys value not match
10 次查看(过去 30 天)
显示 更早的评论
Hi,
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)};
thanks.
回答(1 个)
Walter Roberson
2019-11-9
编辑:Walter Roberson
2019-11-11
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);
2 个评论
Walter Roberson
2019-11-11
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.
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!