在Cell - Matlab中用整数ID替换字符串

时间:2011-06-11 00:48:58

标签: matlab matrix cell

我有一个包含字符串ID的单元格。我需要用整数ID替换它们,以便可以将单元格转换为矩阵。我特别需要这是一个矢量化操作,因为celldata是巨大的。

celldata = { 'AAPL' [0.1] ; 'GOOG' [0.643] ; 'IBM' [0.435] ; 'MMM' [0.34] ; 'AAPL' [0.12] ; 'GOOG' [1.5] ; 'IBM' [0.75] ; 'AAPL' [0.56] ; 'GOOG' [0.68] ; 'IBM' [0.97] ; };

我设计了一个顺序的intID:

intIDs = {'AAPL' [1] ; 'GOOG' [2] ; 'IBM' [3] ; 'MMM' [4]};

intIDs包含celldata中可能的所有ID。此外,celldata按顺序排列ID,并按日期分组。此处未显示日期列。

期望的结果:

celldata = {[1] [0.1] ; [2] [0.643] ; [3] [0.435] ; [4] [0.34] ; [1] [0.12] ; [2] [1.5] ; [3] [0.75] ; [1] [0.56] ; [2] [0.68] ; [3] [0.97] ;};

谢谢!

1 个答案:

答案 0 :(得分:3)

您可以使用ismember功能和逻辑索引来实现您的目标。

[~,indx]=ismember(celldata(:,1),intIDs(:,1));
celldata(:,1)=intIDs(indx,2)

celldata = 

    [1]    [0.1000]
    [2]    [0.6430]
    [3]    [0.4350]
    [4]    [0.3400]
    [1]    [0.1200]
    [2]    [1.5000]
    [3]    [0.7500]
    [1]    [0.5600]
    [2]    [0.6800]
    [3]    [0.9700]