文件位置和状态函数-大学物理知识点总结
"8.8 文件位置和状态函数
第八章输入/输出函数
第239页
2008-01-17 18:51 250,000 formatted.dat
2008-01-17 18:51 80,000 unformatted.dat
2个文件330,000字节
2个目录2,495,549,440可用字节
注意,写入格式化文件数据所需的时间是无格式文件的60倍,读取时间是无格式文件的75倍。还有,格式化文件的大小是无格式文件的3倍。结果非常清楚,除非你真得需要格式化数据,否则二进制I/O操作是MATLAB中存储数据的一个非常好的方法。
测试8.2
本测试提供了一个快速的检查方式,看你是否掌握了8.1到8.5的基本内容。如果你对本测试有疑问,你可以重读8.1到8.5,问你的老师,或和同学们一起讨论。在附录B中可以找到本测试的答案。
-
格式化和二进制I/O操作的区别是什么?
-
什么时侯我们应当用格式化I/O操作?什么时侯我们应当用二进制I/O操作?
-
编写MATLAB语句创建一个表,由x的正弦值和余弦值(x = 0, 0.1pi, ..., pi)组成,表上有标题和标签。看第4题和第5题,判断MATLAB语句是否正确。如果有错误,指出错在那里。
-
a = 2*pi; b = 6; c = 'hello'; fprintf(fid, '%s %d %g ', a, b, c);
-
data1 = 1:20; data2 = 1:20; fid = fopen('xxx', 'w+'); fwrite(fid, data1); fprintf(fid, '%g ', data2);
8.8 文件位置和状态函数
正如我们前面所陈述的,MATLAB文件是连续的——它们从第一条记录开始一直读到最后一条记录。但是,有时在一个程序中,我们需要多次调用一段数据或整个文件。在一个连续文件中,我们如何跳过无用的数据呢?在打开文件之前,MATLAB函数exist
用于判断这个文件是否存在。一旦一个文件打开,我们就可以用函数feof
和ftell
判断当前数据在文件中的位置。还用两个函数帮助我们在文件中移动:frewind
和fseek
。当程序发生I/O错误时,MATLAB函数ferror
将会对这个错误进行详尽的描述。我们现在将向大家详细的介绍这6个函数,我们先看一下ferror
,因为它可以应用其他的函数中。
8.8.1 exist
函数用来检测工作区中的变量,内建函数或MATLAB搜索路径中的文件是否存在。它的形式如下:ident = exist('item'); ident = exist('item', 'kind');
如果“item”存在,函数就根据它的类型返回一个值。可能的结果被显示在表8.12中。