我有一个像这样的字符串cellarray
12:34
13:45
12:45
现在我想将这个单元格数组拆分为两个,其中的值由分隔符分隔。像这样的东西
第一个
12
13
12
和第二个
34
45
45
我怎样才能在matlab中做到这一点?
答案 0 :(得分:4)
输入字符串单元格数组 -
str_cellarr ={
'12:34'
'13:45'
'12:45'}
转换为一个单元格数组,每个单元格都有一个1x2
单元格的分割字符串 -
split1 = cellfun(@(x) strsplit(x,':'), str_cellarr(:),'uni',0)
或者根据@Luis建议使用更有效的解决方案 -
split1 = regexp(str_cellarr, ':', 'split')
在此之后,您可以采用两种方法。
方法#1
转换为2 element
单元格数组,每个单元格包含由分隔符':'
分隔的每个“字符串”字符串 -
split1_2cols = mat2cell(vertcat(split1{:}),size(str_cellarr,1),[1 1])
最后,将每个集合存储为单独的变量作为最终输出 -
[var1,var2] = deal(split1_2cols{:})
方法#2
使用split1
数组中的每一列获取每个集合并将它们存储为单独的变量 -
var1 = arrayfun(@(n) split1{n}(1),1:size(str_cellarr,1))' %//'
var2 = arrayfun(@(n) split1{n}(2),1:size(str_cellarr,1))' %//'
如果您希望获得字母输出,请使用char(..)
来获取这些输出。
答案 1 :(得分:3)
看来你正在处理时间问题。意味着hours:minutes
。
在这种情况下,最简单的方法是使用为此目的而制作的datevec
函数。
str = { '12:34'
'13:45'
'12:45'};
[~, ~, ~, H, M] = datevec(str,'HH:MM')
返回:
H =
12
13
12
M =
34
45
45
如果你有minutes:seconds
它同样有效:
[~, ~, ~, ~, M, S] = datevec(str,'MM:SS')
如果您还需要字符串,请将所有内容推送到num2str
,例如:
MinutesAsString = num2str(M);