创建新的元胞数组矩阵
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
对元胞数组进行操作,因此您可以用 cellfun
和 cell2mat
交换这一行:
E = str2double(vertcat(C{:}))
输出:
E =
15 13
14 12
16 13
16 13
16 14
17 14
17 14
18 14
19 15
我有一个 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
对元胞数组进行操作,因此您可以用 cellfun
和 cell2mat
交换这一行:
E = str2double(vertcat(C{:}))
输出:
E =
15 13
14 12
16 13
16 13
16 14
17 14
17 14
18 14
19 15