创建新的元胞数组矩阵

Create new matrix of cell arrays

我有一个 1x254 元胞数组,其中包含此类型的数据:

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

第一个数字对应temp,第二个数字对应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{:}));

但我找不到出路....

可以给我提示吗?

你很接近。您可以像以前一样使用 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(:)])

注意:

正如 Luis 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