Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 基于分隔符拆分字符串单元格数组_Matlab_Cell Array - Fatal编程技术网

Matlab 基于分隔符拆分字符串单元格数组

Matlab 基于分隔符拆分字符串单元格数组,matlab,cell-array,Matlab,Cell Array,我有一根类似这样的绳子 12:34 13:45 12:45 现在我想把这个单元格数组分成两部分,用分隔符分隔值。像这样的 12:34 13:45 12:45 第一个 12 13 12 第二个呢 34 45 45 如何在matlab中执行此操作?输入字符串单元格数组- str_cellarr ={ '12:34' '13:45' '12:45'} 转换为单元格数组,每个单元格都有一个拆分字符串的1x2单元格- split1 = cellfun(@(x) strsp

我有一根类似这样的绳子

12:34
13:45
12:45
现在我想把这个单元格数组分成两部分,用分隔符分隔值。像这样的

12:34
13:45
12:45
第一个

12
13
12
第二个呢

34
45
45

如何在matlab中执行此操作?

输入字符串单元格数组-

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元素
单元格数组,每个单元格包含由分隔符分隔的字符串的每个“集合”:“-

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(..)
来获得这些输出。

似乎您正在处理时间问题。表示
小时:分钟

在这种情况下,最简单的方法就是使用该函数,该函数就是为此而设计的

str = { '12:34'
        '13:45'
        '12:45'};

[~, ~, ~, H, M] = datevec(str,'HH:MM')
返回:

H =
    12
    13
    12


M =
    34
    45
    45
如果您有
分:秒
,它的工作原理相同:

[~, ~, ~, ~, M, S] = datevec(str,'MM:SS')
如果您还需要字符串,请将所有内容推送到
num2str
,例如:

MinutesAsString = num2str(M);

稍微简单一点:
split1=regexp(str_cillar,,,'split')聪明的观察+1.