我有一个25 x 2的单元格数组,其中包含名称和代码,称为“名称”。代码是数字的。我有另一个40 x 4的单元格叫做“数据”。
单元格'data'中的一列包含可以链接到其他'names'单元格的数字代码。我试图做的是将'data'中的数字代码替换为'names'单元格中的相应名称。
我正在考虑将数字代码字段转换为字符串,如下所示。然后使用strrep函数我相信我必须创建一个循环来替换所有字符串。有没有更好的方法来完成这项任务?需要循环吗?
num2str(cell2mat(data(:,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}])