我正在尝试在matlab中循环一组日期/时间,使用带有以下分隔符('/'或':'或'。')的regexp拆分每一列,并将每列分别存储为年份,日,小时,分钟,秒,ss,分别。最后,我试图将这个Julian日期和时间数组转换为matlab中的 plot -able格式。到目前为止,我已经能够遍历我的数组'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
答案 0 :(得分:0)
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行。
答案 1 :(得分:0)
您走在正确的轨道上,但是,您不需要for
循环。
只需这样就足够了:
clean2_time=regexp(time, '[/:.]', 'split');
然后clean2_time
是一个单元结构,其中每一行包含另一个1x6单元阵列。然后,您可以使用clean2_time{row}{column}
访问不同的值。如果你真的希望clean2_time
是一个nx6数字矩阵而不是这个字符串的单元格数组,只需使用它来重塑:
clean2_time=cellfun(@str2num,vertcat(clean2_time{:}))