创建新的单元阵列矩阵

时间:2015-11-07 20:05:26

标签: matlab cell-array

我有一个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{:}));

但我发现无法取得成功......

可以给我一个暗示吗?

1 个答案:

答案 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对单元格数组进行操作,因此您可以为此单行交换cell2matE = 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"