我有一个matlab单元格数组,其成员如下:
'abc201301.csv'
'avf201312.csv'
'sdffdsd201305.csv'
'wfeef201406.csv'
'ffgewgfw201106.csv'
'sdfdf201101.csv'
'wrrrt201009.csv'
我想在不使用for循环的情况下在数值矩阵中提取以下内容,因为这个矩阵很大:
201301
201312
201305
201406
201106
201101
201009
我怎样才能做到这一点?
由于
答案 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个数字的序列拉出到单独的单元格数组中,然后将它们转换为单个数字数组。