首页 > 编程笔记 > MATLAB笔记 阅读:16

MATLAB fgetl()、fgets()和fprintf()函数:读文本文件(附带实例)

本节介绍 MATLAB 中 3 个读取文本文件的函数,分别是 fgetl()、fgets() 和 fscanf()。

MATLAB fgetl()和fgets()

在 MATLAB 中,利用 fgetl() 函数和 fgets() 函数可以读取文本文件,它们的调用格式如下:
【实例 1】读文本文件。在命令行窗口中输入如下代码,并保存为 M 文件。
fID=fopen('t.m');
while 1
    tline = fgetl(fID);
    if ~ischar(tline)
        break;
    end
    disp(tline)
end
fclose(fID);
运行后,输出结果如下:

a=[35,20,25,15,35];
b=[1554.88,1555.24,1555.76,1556.20,1556.68];
figure(1)
plot(a,b)

MATLAB fscanf()

若已知 ASCII 码文件的格式,要进行更精确的读取,则可用 fscanf() 函数从文件中读取格式化的数据。

fscanf() 函数的调用格式如下:
[a,count]=fscanf(fID,format,size)
此命令从文件标识为 fID 的文件中读取数据,并转换成指定的 format 格式字符串(返回到矩阵 a 中):
format 用于指定读入数据的类型,常用的格式如下:
在格式说明中,除了单个的空格字符可以匹配任意个数的空格字符,通常的字符在输入转换时将与输入的字符一一匹配。函数 fscanf() 将输入的文件看作一个输入流,MATLAB 根据格式匹配输入流,并将匹配中匹配的数据读入 MATLAB 系统中。

【实例 2】fscanf() 的使用。
1) 用 type 命令读取 table.txt 文件中的内容。在命令行窗口中输入以下代码:
>> type table.txt
输出结果如下:

1 2 3 4 5 6 7 8 9


2) 按字符串形式输入,读取结果。在命令行窗口中输入如下代码,并保存为 M 文件:
fID=fopen('table.txt','r');
title=fscanf(fID,'%s');
status=fclose(fID);
title
运行后,输出结果如下:
title =
    '123456789'

3) 以双精度格式读取文本。在命令行窗口中输入以下代码,并显示相应的输出结果:
>> fID=fopen('table.txt','r')
>> data=fscanf(fID,'%f')
fID =
    5
data =
    1
    2
    3
    4
    5
    6
    7
    8
    9

【实例 3】使用 fprintf() 和 fscanf() 函数写入并读取字符串。在命令行窗口中输入如下代码,并保存为 M 文件:
clear all;
a='LadyGaga ,BAD Romance.'
[fID,msg]=fopen('chap.txt','wt');
if fID==-1
    disp(msg);
else
    fprintf(fID,'%s',a);
    fclose(fID);
end
[fID,msg]=fopen('chap.txt','r');
if fID==-1
    disp(msg);
else
    a1=fscanf(fID,'%c',4)
    frewind(fID);
    a2=fscanf(fID,'%c',[3,4])
    frewind(fID)
    a3=fscanf(fID,'%c')
    frewind(fID)
    a4=fscanf(fID,'%s',4)
    frewind(fID)
    a5=fscanf(fID,'%s')
    fclose(fID);
end
运行后,输出结果如下:
a =
    'LadyGaga ,BAD Romance.'
a1 =
    'Lady'
a2 =
    3X4 char 数组
    'Lyg,'
    'aGaB'
    'da A'
a3 =
    'LadyGaga ,BAD Romance.'
a4 =
    'LadyGaga,BADRomance.'
a5 =
    'LadyGaga,BADRomance.'

相关文章