单元字符串查找并替换为映射向量

时间:2014-05-02 07:51:02

标签: matlab

我有一个25 x 2的单元格数组,其中包含名称和代码,称为“名称”。代码是数字的。我有另一个40 x 4的单元格叫做“数据”。

单元格'data'中的一列包含可以链接到其他'names'单元格的数字代码。我试图做的是将'data'中的数字代码替换为'names'单元格中的相应名称。

我正在考虑将数字代码字段转换为字符串,如下所示。然后使用strrep函数我相信我必须创建一个循环来替换所有字符串。有没有更好的方法来完成这项任务?需要循环吗?

 num2str(cell2mat(data(:,1)));

1 个答案:

答案 0 :(得分:3)

您可以使用ismember执行此操作,但ismember无法对数字的单元格数组起作用,因此我先使用cell2mat将它们转换为数字向量。

names = {'A', 1; 'B', 2; 'C', 3};
data = {1, 1, 'a'; 2, 2, 'b'; 1, 1, 'c'; 1, 1, 'd'; 3, 3, 'e'};

[~, ind] = ismember(cell2mat(data(:,1)), cell2mat(names(:,2)))
data(:,1) = names(ind)

您实际上可以使用逗号分隔列表来删除cell2mat调用,如下所示:

[~, ind] = ismember([data{:,1}], [names{:,2}])