Matlab:从单元格数组中提取日期

时间:2013-09-24 14:23:04

标签: matlab

我有一个matlab单元格数组,其成员如下:

'abc201301.csv'
'avf201312.csv'
'sdffdsd201305.csv'
'wfeef201406.csv'
'ffgewgfw201106.csv'
'sdfdf201101.csv'
'wrrrt201009.csv'

我想在不使用for循环的情况下在数值矩阵中提取以下内容,因为这个矩阵很大:

201301
201312
201305
201406
201106
201101
201009

我怎样才能做到这一点?

由于

2 个答案:

答案 0 :(得分:0)

我有一个部分解决方案。您可以通过以下方式提取数字:

[~, remain] = strtok(str, ['1', '2', '3', '4', '5', '6', '7', '8', '9']);

这将返回保持数字加.csv,这是一个恒定长度的字符串,您应该可以remain = remain(1:end-4)直接消除。 strtok函数也可以在字符串的单元格数组上调用,但它将返回单元格数组结果。为了在没有for循环的情况下访问单元数组的内容,请参阅此Mathworks discussion以获取一些语法概念。

我确信必须有办法让strtok只给你你想要的结果(所以你可以跳过删除.csv部分),所以我建议你自己玩一下(和看看documentation)。

无论如何,我知道这不是一个完整的答案,但希望这可以为您提供完整解决方案所需的组件。

答案 1 :(得分:0)

如果A是您的初始单元格数组,

B = regexpi(A,'\d{6}','match');
B = cellfun(@str2num,vertcat(B{:}));

应该做的伎俩。它将6个数字的序列拉出到单独的单元格数组中,然后将它们转换为单个数字数组。