3.3 读写文本文件

文本文件MATLAB提供读写文本文件的函数包括fprintf、fgetl和fgets等,下文结合示例介绍使用这些函数进行读写操作的方法。

3.3.1 写文本文件

fprintf函数将数据转换成指定格式字符串,写入文本文件中。其调用格式可以为:

    count=fprintf(fid, format, y)

其中fid是要写入的文件标识,由fopen函数产生;format是格式类型标识,用以指定数据写入文件的格式;y是MATLAB的数据变量;count是返回的成功写入的字节数。

fid值也可以是代表标准输出的1和代表标准出错的2,如果fid字段省略,则默认值为1,此时将结果输出到屏幕上。常用的格式类型标识如下:

● %e 科学计数形式,即数值表示成a×10b形式;

● %f 固定小数点位置的数据形式;

● %g 在上述两种格式中自动选取较短的格式。

该函数可以使用一些特殊格式,如\n、\r、\t、\b、\f等来产生换行、回车、tab、退格等字符,并用\\来产生反斜线符号\,用%%来产生百分号。此外,该函数还可以包括数据占用的最小宽度和数据精度的说明。

例3-7,写文本文件。

在命令行窗口中输入:

    x = 0:0.25:1;
    y = [x; sin(x)];                      %创建矩阵
    fid = fopen('exptable.txt', 'w');     %打开将写入的文件
    fprintf(fid, 'Sin Function\n\n');     %写入首行
    fprintf(fid, '%f  %f\n', y);          %写入矩阵
    fclose(fid);                          %关闭文件
    type exptable.txt                     %列表显示文件

输出结果如下:

    Sin Function
    0.000000  0.000000
    0.250000  0.247404
    0.500000  0.479426
    0.750000  0.681639
    1.000000  0.841471

在本例中,第一条fprintf语句输出一行标题,随后换行;第二条fprintf语句输出函数值表,每组自变量和函数值占一行,都是固定小数点位置的形式。

提示

sprintf函数与fprintf函数功能类似,但是sprintf将数据以字符串形式返回,而不是直接写入文件。

3.3.2 读文本文件

在MATLAB中可以使用fgetl和fgets函数读取文本文件。两函数的调用格式如下:

    tline=fgetl(fid)
    tline=fgets(fid)

提示

两个函数的功能很相似,均可从文件中读取一行数据,区别在于fgetl会舍弃换行符,而fgets则保留换行符。

例3-8,读文本文件示例。

在命令行窗口中输入:

    fid=fopen('fgetl.m');
    tline1 = fgetl(fid)
    fclose(fid);
    fid=fopen('fgetl.m');
    tline2 = fgets(fid)
    fclose(fid);
    whos tline1 tline2

命令行窗口中的输出结果如下:

    tline1 =function tline = fgetl(fid)
    tline2 =function tline = fgetl(fid)
      Name          Size            Bytes  Class Attributes
      tline1       1x27                  54  char
      tline2       1x28                  56  char