2017-08-11 64 views
1

所以我有这样的代码,MATLAB出口datestr成txt文件

%% 
%Changing from the unix epoch time to standard DDMMYY format 
%Importing the data 
unix_time = [1435763099;1435763109;1435763119;1435763129]; %time of the plot 

%Conversion of the epoch data 
time = datestr(719529+unix_time/86400,'dd/mmm/yyyy HH:MM:SS'); 

而且我想在“时间”导出为txt文件或练成但我不能找到一种方法,这样做而不会导致错误的txt文件。

fid = fopen('time.txt','wt'); 
fprintf(fid, time) 
fclose(fid); 

这个方法我试过,但似乎它并没有给我正确的结果我正在寻找这是我想要的结果是unix_time转换为日/月/ YYYY HH:MM :SS格式并将其导出到列文本文件中。

我wan't结果到一个文本文件中

01/Jul/2015 15:04:59, 
01/Jul/2015 15:05:09, 
01/Jul/2015 15:05:19, 
01/Jul/2015 15:05:29, 
+0

你需要每行结尾的昏迷吗? –

回答

2

我认为在这种情况下,其最佳显示此使用不同的功能比fprintf

dlmwrite将做的工作就好了,如果使用如下:

dlmwrite('time.txt',time,'delimiter',''); 

然而,这不会在每一行的末尾添加昏迷。如果你想要昏迷,你可以使用矩阵索引将它们添加到变量time,然后再将它写入文件。

time(:,end+1):','; 
+1

非常感谢您的帮助,它的工作原理!大! 但是,最终目标是将其用作绘图的x轴,看起来我得到一个错误。有没有办法解决这个问题? –

+0

是否可以用这个新转换的状态替换原始数据? –

+0

@SajinGurung这似乎是一个完全不同的问题!考虑要求一个新的。 –

2

上述fprintf呼叫没有表现为期望的原因是fprintf(以及更一般地,MATLAB)是列为主,这就是为什么你得到00001111....

这是一个很好的用于MATLAB的new-ish string类,在R2016b中引入。 string阵列由fprintf原生支持,并打印按预期方式:

unix_time = [1435763099;1435763109;1435763119;1435763129]; 
time = string(datestr(719529+unix_time/86400,'dd/mmm/yyyy HH:MM:SS')); 

fid = fopen('time.txt','wt'); 
fprintf(fid, '%s,\n', time); 
fclose(fid); 

打印出:

01/Jul/2015 15:04:59, 
01/Jul/2015 15:05:09, 
01/Jul/2015 15:05:19, 
01/Jul/2015 15:05:29, 

如果您使用MATLAB的旧版本而无需为支持string类,你可以做一些小的调整,以获得fprintf合作。当遇到列主要怪癖fprintf时,第一个倾向是transpose数据,这应该让我们在我们想要的地方,对吧?

unix_time = [1435763099;1435763109;1435763119;1435763129]; 
time = datestr(719529+unix_time/86400,'dd/mmm/yyyy HH:MM:SS'); 
fprintf('%s,\n', time.') 

这给了我们:

01/Jul/2015 15:04:5901/Jul/2015 15:05:0901/Jul/2015 15:05:1901/Jul/2015 15:05:29, 

哎呦。它在技术上给我们提供了我们想要的东西,但它只是最后一排。为了解决这个问题,我们可以追加一个换行符,\n,我们的逗号每一行结束前换位:

unix_time = [1435763099;1435763109;1435763119;1435763129]; 
time = datestr(719529+unix_time/86400,'dd/mmm/yyyy HH:MM:SS'); 
fprintf('%s', horzcat(time, repmat(sprintf(',\n'), size(time, 1), 1)).'); 

它打印:

01/Jul/2015 15:04:59, 
01/Jul/2015 15:05:09, 
01/Jul/2015 15:05:19, 
01/Jul/2015 15:05:29, 

耶!

+0

太棒了!谢谢! 但是,最终目标是将转换后的值用作我之前忘记提及的图形图的x轴。有没有办法将这个结果实现成图形? –

+0

@SajinGurung如果你想使用它作为x轴你为什么要把它写入文件?这似乎是一个完全不相关的问题。 – excaza