Matlab将值从一列映射到Map中的值

时间:2018-08-16 16:34:32

标签: matlab dictionary

在MATLAB R2016a中,我正在读取一个表并从其两列(水果(TEXT)和卡路里(NUMBER))创建地图:

map_table = readtable('map.csv');
Keys = table2cell(map_table(:, 1)); %Fruits
Values = table2cell(map_table(:, 2)); %Calories
Map = containers.Map(Keys, Values);

我还有另一个表,其中包含一个名为Food(TEXT)的列,其中多次包含Fruit列的所有值:

table = readtable('table.csv');

我想用表格中每种食物的卡路里来创建表格中的另一列。这是通过使用Map将table.Food中的值映射为卡路里来实现的。

我尝试了以下操作,但出现错误:

Map(table.Food)

Error using containers.Map/subsref 
Specified key type does not match the type expected for this container.

当我在地图中传递单个键时,它确实会返回一个数字:

Map('Apple')
ans = 90

如何完成映射?我知道在 R 中,有一个名为mapvalues的函数可以完成此任务。

1 个答案:

答案 0 :(得分:2)

您无法传递“映射单元格数组”,因此请尝试循环或使用cellfun:

cellfun(@(x) M(x), table.Food)