2011-06-11 32 views
1

我有一個具有字符串ID的單元格。我需要用整數ID替換它們,以便可以將單元格轉換爲矩陣。我特別希望這是一個向量化的操作,因爲celldata是巨大的。用單元格中的整數ID替換字符串 - Matlab

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包含的所有ID,在celldata是可能的。另外,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] ;};

謝謝!

回答

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] 
+0

謝謝尤達.... – Maddy 2011-06-11 23:42:23