1.4.1 diary

英文单词diary有日志、日记的意思,MATLAB提供的diary命令,可以让用户将当前命令行窗口中的命令、运算结果等都记录在日志中,以备后续查用。日志以文本格式保存在文件中,任何可阅读ASCII格式的软件均可打开该日志。它常见的语法格式包括:①diary;②diary filename;③diary off;④diary on。

单独使用diary时,只能开启和关闭日志记录。当开启日志记录时,MATLAB从命令行窗口捕获输入命令、键盘输入和文本输出。它将生成的日志以名为diary的ASCII文本文件形式保存到当前文件夹中。因此,要想查看是否已开启日志记录,就输入get(0,'Diary'),MATLAB将返回on或off。

当使用带文件名的格式时,diary filename将生成的日志保存到filename文件中,如果该文件已存在,则MATLAB会将文本追加到文件末尾。若要查看当前diary文件的名称,则输入get(0,'DiaryFile')即可。

当不再使用diary时,需要及时关闭记录,以免记录一些不必要的操作信息,diary off即禁用日志记录。若想继续记录日志,则使用diary on启用即可。

在上述的使用过程中,有两点需要特别注意,一是输出的文件是ASCII文本格式,如果一定要输出到word文档等文件中,那么极有可能会失败,失败的原因并不是建立了文档,而是不能使用diary输入文档;二是当使用第二种格式时,filename字符串会被认为是文件名,当期望使用可变的文件名时,会达不到目的。例如:

上述代码的本意是建立一个test.docx,然后使用diary命令将字符串“这是测试diary是否可以输出到docx文件!”输入文件。从语法角度讲没有问题,但测试后会发现以下问题。

(1)并未建立test.docx。

(2)建立了一个名为fn的文档,该文档中存有“这是测试diary是否可以输出到docx文件!”,如图1-17所示。

(3)上述代码是在untitle2.m脚本中执行的,若改为在.mlx实时脚本中执行,则执行时不能输出。

运行上述代码后,得出以下结论。

(1)diary记录的是命令行窗口中的结果,不适用于实时窗口。

(2)在diary fn这种格式下,fn不是变量名称,而是字符串文件名。我们期望以test.docx为文件名,虽然已保存在变量fn中,但在diary fn格式下,已经建立的变量fn并未被进一步使用。

(3)若想将字符串变量fn中的文件名当作diary的输出文档,则必须使用diary(fn)格式,此时fn作为变量使用,会将它保存的文档名称test.docx输入diary,如图1-18所示。

图1-17 fn成为输出日志的文件名称

图1-18 使用函数形式带参数的diary

(4)可以预测,即使使用diary(fn)格式给了diary文件名,也只是建立一个空的test.docx文档,如图1-19所示。diary不能在该文档中写入什么,甚至用户都不能通过Word打开该文档,如图1-20所示。

因此,若使用变化名称的diary记录,则必须采用函数参数形式的语法格式,且用.txt文本格式的文件。

图1-19 创建了docx文档

图1-20 不能使用的.docx文档