2015-11-07 48 views
2

我有一個單元陣列1x254與這種類型的數據的新的矩陣:創建單元陣列

data = {'15/13' '14/12' '16/13' '16/13' '16/14' '17/14' '17/14' '18/14' '19/15'}; 

所述第一數量對應於所述溫度,所述第二數量的TEMP2

我需要分離數據並插入他們在一個矩陣:

B = 

    15 13 
    14 12 
    16 13 
    16 13 
    16 14 
    17 14 
    18 14 
    19 15 

我試圖用這個解決方案

data = regexp(tempr, '\W','split'); 
B=cell2mat(cat(3,data{:})); 

但我找不到前進的方向....

可以給我一個提示嗎?

回答

3

你很親密。你可以把它用regexp象你那樣做,但/作爲分隔符,除了cellfun(這僅僅是一個循環真)從字符串轉換爲數字,然後應用cell2mat得到一個數值數組作爲輸出:

clc 
clear 

data = {'15/13' '14/12' '16/13' '16/13' '16/14' '17/14' '17/14' '18/14' '19/15'}; 

%// Split data 
C = regexp(data, '/', 'split'); 

%// Convert from strings to double 
D = cellfun(@str2double,C,'uni',0); 

%// Get final numeric matrix 
E = cell2mat([D(:)]) 

注:

正如路易斯Mendo指出,str2double對電池陣列工作,所以你可以爲這個單行交易cellfuncell2mat

E = str2double(vertcat(C{:})) 

輸出:

E = 

    15 13 
    14 12 
    16 13 
    16 13 
    16 14 
    17 14 
    17 14 
    18 14 
    19 15 
+0

@ Benoit_11thanks,很好的解決方案,我還有很多要學 – Antonio

+0

大高興能幫上忙! –

+1

'str2double'允許單元格數組輸入。所以你可以使用'E = str2double(vertcat(C {:}));' –