我有一个Cell Array 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{:}));
但我发现无法取得成功......
可以给我一个暗示吗?
答案 0 :(得分: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(:)])
获取数值数组作为输出:
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
输出:
string<-c("7BC-137", "A56_asdf", "M33_T99")
gsub('(_|-).*','',string)
[1] "7BC" "A56" "M33"