C = {'hello', 'goodbye', 'hola', 'hello hellen', 'helmet', 'hellorheaven', 'hillsboro', 'say hello', 'myfellow'}
defaultval = 100
key = {'hello', 'goodbye', 'hola', 'hello hellen', 'helmet', 'hellorheaven', 'hillsboro', 'say hello', 'myfellow'}
value = [defaultval, defaultval, defaultval,defaultval,defaultval,defaultval,defaultval,defaultval,defaultval]
mapObj = containers.Map(key,value )
for n = 1:length(C)
d1 = strdist('goodfellow', C(n) )
disp(C(n) )
disp(mapObj('hello' ) )
mapObj(C(n) ) = d1
end
在这种情况下,我试图用库函数计算字符串距离,并将距离保存到我创建的地图中。但即使C是一个char数组,我的地图的关键类型也是如此。我不能使用mapObj(C(n))来访问和更改我的值。我该如何解决?
mapObj =
Map with properties:
Count: 9
KeyType: char
ValueType: double
我试着按照这里的例子 https://www.mathworks.com/help/matlab/matlab_prog/modifying-keys-and-values-in-the-map.html ticketMap('A479GY')
ans =
莎拉莱瑟姆然而,使用我的代码,我收到错误
使用containers.Map/subsasgn时出错 指定的密钥类型与此容器的预期类型不匹配。
exercise01中的错误(第76行) mapObj(C(n))= d1
答案 0 :(得分:1)
正如@excaza在评论中指出的那样,问题在于索引。使用圆括号,可以检索单元格。但是你的字典键实际上是键入字符串(确切地说,是一个字符数组)。为了从单元格数组中提取char数组,必须使用花括号。有关访问单元格中数据的更多信息,请阅读this documentation。
keys = {'hello', 'goodbye', 'hola', 'hello hellen', 'helmet', 'hellorheaven', 'hillsboro', 'say hello', 'myfellow'};
keys_len = numel(keys);
vals = repmat(100,1,keys_len);
map = containers.Map(keys,vals);
for n = 1:keys_len
key = keys{n};
map(key) = strdist('goodfellow',key);
end