Matlab 正则表达式拆分时间数组并保存绘图的时间输出



我正在尝试在 matlab 中循环访问日期/时间数组,使用以下分隔符("/"或":"或".")使用 regexp 拆分每列,并将每列分别存储为年、日、小时、分钟、秒、ss。 最终,我试图将这个儒略日期和时间数组转换为 matlab 中的可绘图格式。 到目前为止,我已经能够遍历名为"time"的数组,并创建了一个名为"clean2_time"的新 1x6 单元格,该单元格根据分隔符"/":"和"."将每行分成 6 列(年、日、小时、分钟、秒、ss)。 我的问题是循环每次迭代都会覆盖"clean2_time",最后一行只剩下最后的 1x6 时间戳。 我尝试创建一个所有零"z"的新变量并将"clean2_time"设置为等于 z,但没有运气。

"时间"示例:

'2013/231/21:38:09.856619'
'2013/231/21:38:09.955640'
'2013/231/21:38:10.156685'
'2013/231/21:38:10.356550'
'2013/231/21:38:10.556770'
'2013/231/21:38:10.756565'
'2013/231/21:38:10.955627'
'2013/231/21:38:11.256588'
'2013/231/21:38:11.556649'
'2013/231/21:38:11.955597'
'2013/231/21:38:12.356627'
'2013/231/21:38:12.856557'
'2013/231/21:38:13.356558'
'2013/231/21:38:14.156530'
'2013/231/21:38:14.970500'
'2013/231/21:38:16.256545'
'2013/231/21:38:16.266736'
'2013/231/21:38:18.156398'

到目前为止我尝试过的代码:

z=zeros(size(time,1),6);
for i = 1:size(time,1)  % for i = 1 to 5922
    clean2_time = regexp(time{i,1}, '[/:.]', 'split');
    z{i,1} = clean2_time(i,1)
    z{i,2} = clean2_time(i,2)
    z{i,3} = clean2_time(i,3)
    z{i,4} = clean2_time(i,4)
    z{i,5} = clean2_time(i,5)
    z{i,6} = clean2_time(i,6)
end

您走在正确的轨道上,但是,您不需要for循环。

只需这样做就足够了:

clean2_time=regexp(time, '[/:.]', 'split');

然后clean2_time是一个单元格结构,其中每行包含另一个 1x6 单元格数组。然后,您可以使用以下方法访问不同的值:clean2_time{row}{column} .如果你真的想clean2_time是一个 nx6 数字矩阵而不是这个字符串的单元格数组,只需使用它来重塑:

clean2_time=cellfun(@str2num,vertcat(clean2_time{:}))
clean2_time=zeros(size(time,1),6);
for i = 1:size(time,1)  % for i = 1 to 5922
    clean2_time(i,:)=regexp(time{i,1}, '[/:.]', 'split')
end

clean2_time(i,:)为单元格的第 i 行编制索引。

最新更新