MATLAB 将 datestr 导出到 txt 文件
MATLAB exporting datestr into txt file
所以我有这个代码,
%%
%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');
而且我想将 'time' 导出到 .txt 文件或 excel 但是我无法找到一种方法来做到这一点而不导致错误的 txt 文件。
fid = fopen('time.txt','wt');
fprintf(fid, time)
fclose(fid);
我试过这个方法,但它似乎没有给我我正在寻找的正确结果,我希望结果是 unix_time 转换为 dd/mmm/yyyy HH:MM:SS 格式化并将其导出到列文本文件中。
我不想在文本文件中显示结果
01/Jul/2015 15:04:59,
01/Jul/2015 15:05:09,
01/Jul/2015 15:05:19,
01/Jul/2015 15:05:29,
我认为在这种情况下最好使用不同于 fprintf
的函数。
如果按以下方式使用,dlmwrite
会很好地完成工作:
dlmwrite('time.txt',time,'delimiter','');
但是,这不会在每行的末尾添加逗号。如果你想要逗号,你可以在将它们写入文件之前使用矩阵索引将它们添加到变量 time
中。
time(:,end+1):',';
上面的 fprintf
调用没有按预期运行的原因是因为 fprintf
(更一般地说,MATLAB)是列优先的,这就是为什么你得到 00001111....
这是在 R2016b 中引入的 MATLAB 新 string
class 的一个很好的用例。 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,
如果您使用的是不支持 string
class 的旧版 MATLAB,您可以进行一些小的调整以获得 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,
耶!
所以我有这个代码,
%%
%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');
而且我想将 'time' 导出到 .txt 文件或 excel 但是我无法找到一种方法来做到这一点而不导致错误的 txt 文件。
fid = fopen('time.txt','wt');
fprintf(fid, time)
fclose(fid);
我试过这个方法,但它似乎没有给我我正在寻找的正确结果,我希望结果是 unix_time 转换为 dd/mmm/yyyy HH:MM:SS 格式化并将其导出到列文本文件中。
我不想在文本文件中显示结果
01/Jul/2015 15:04:59,
01/Jul/2015 15:05:09,
01/Jul/2015 15:05:19,
01/Jul/2015 15:05:29,
我认为在这种情况下最好使用不同于 fprintf
的函数。
dlmwrite
会很好地完成工作:
dlmwrite('time.txt',time,'delimiter','');
但是,这不会在每行的末尾添加逗号。如果你想要逗号,你可以在将它们写入文件之前使用矩阵索引将它们添加到变量 time
中。
time(:,end+1):',';
上面的 fprintf
调用没有按预期运行的原因是因为 fprintf
(更一般地说,MATLAB)是列优先的,这就是为什么你得到 00001111....
这是在 R2016b 中引入的 MATLAB 新 string
class 的一个很好的用例。 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,
如果您使用的是不支持 string
class 的旧版 MATLAB,您可以进行一些小的调整以获得 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,
耶!