2015-11-07 49 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 {:}));' –