Matlab 指定的键类型与此容器的预期类型不匹配
我有一个Matlab 指定的键类型与此容器的预期类型不匹配,matlab,dictionary,cell,Matlab,Dictionary,Cell,我有一个cell\u数组,其29136x1 cell值显示在工作区托盘中。我在工作区托盘中还有一个带有4x1地图的地图new_标签。在提示下打印新标签 new_labels = Map with properties: Count: 4 KeyType: char ValueType: double cell_数组中的每个条目都是映射中的键,但问题是存在类型不匹配,因为映射中的keyType是char,而cell_数组的条目是cell类型 因此,我
cell\u数组
,其29136x1 cell
值显示在工作区托盘中。我在工作区托盘中还有一个带有4x1地图的地图new_标签
。在提示下打印新标签
new_labels =
Map with properties:
Count: 4
KeyType: char
ValueType: double
cell_数组中的每个条目都是映射中的键,但问题是存在类型不匹配,因为映射中的keyType
是char,而cell_数组
的条目是cell
类型
因此,我无法访问地图,因此出现以下情况:
arrayfun(@(x) new_labels(x), cell_array, 'un',0);
给出错误指定的密钥类型与此容器预期的类型不匹配。
我尝试使用char\u cell\u array=char(cell\u array)
转换为char类型,但这会将数组转换为大小29136x4
,这意味着每个条目都只是一个char
,而不是真正的字符串
感谢您的帮助。如果您想使用迭代方式,您必须使用arrayfun
对数值数组进行操作。由于cell\u array
是一个单元格数组,因此需要使用cellfun
而不是arrayfun
,因为cellfun
将在单元格数组上迭代
但是,您真正想要的是在字典中指定多个键以获取相关值。不要为此使用arrayfun/cellfun
。有一个专门的MATLAB函数,用于接收多个键。使用值
方法处理内置到容器中的值。映射
界面:
out = values(new_labels, cell_array);
只需使用值(新标签)
,即可检索字典中的所有值。如果要基于输入键检索特定的值,请提供第二个输入参数,该参数是一个单元格数组,其中包含要在containers.Map
对象中访问的所有键。因为您已经有了这个单元格数组,所以只需将其作为值的第二个输入
运行示例
>> A = containers.Map({1,2,3,4}, {'a','b','c','d'})
A =
Map with properties:
Count: 4
KeyType: double
ValueType: char
>> cell_array = {1,2,2,3,3,4,1,1,1,2,2};
>> out = values(A, cell_array)
out =
'a' 'b' 'b' 'c' 'c' 'd' 'a' 'a' 'a' 'b' 'b'