【问题标题】:cell string find and replace with mapping vector用映射向量查找和替换单元格字符串
【发布时间】:2014-05-02 19:59:07
【问题描述】:

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

单元格“数据”中的一列包含一个数字代码,该代码可以链接到另一个“名称”单元格。我试图做的是用“名称”单元格中的相应名称替换“数据”中的数字代码。

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

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

【问题讨论】:

    标签: matlab


    【解决方案1】:

    您可以使用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)
    

    您实际上可以使用逗号分隔的列表来摆脱cell2matcalls,如下所示:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-05
      • 2019-03-12
      • 1970-01-01
      • 2021-10-09
      • 2011-08-22
      • 2015-07-17
      • 2020-11-02
      相关资源
      最近更新 更多