Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 指定的键类型与此容器的预期类型不匹配_Matlab_Dictionary_Cell - Fatal编程技术网

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'