本节介绍 MATLAB 中的 10 种文件 I/O 的操作函数。
save 函数将工作区中的变量保存到硬盘上,用 save 命令所形成的文件可以是双精度二进制格式 MAT 文件,也可以是 ASCII 文件。
save 函数的语法为:
save
save('filename')
save('filename', 'var1', 'var2', …)
save('filename', '-struct', 's')
save('filename', '-struct', 's', 'f1', 'f2', …)
save(…, 'format')
save filename var1 var2 …
参数说明:
format 可以为以下几种形式。
save函数的使用,具体程序如下:
>> savefile = 'test.mat'; >> p = rand(1, 10); >> q = ones(10); >> save(savefile, 'p', 'q') >> whos -file test.mat Name Size Bytes Class p 1x10 80 double array q 10x10 800 double array Grand total is 110 elements using 880 bytes >> s1.a = 12.7; s1.b = {'abc', [4 5; 6 7]}; s1.c = 'Hello!'; >> save newstruct.mat -struct s1; >> whos -file newstruct.mat Name Size Bytes Class c 1x6 12 char array b 1x2 158 cell array a 1x1 8 double array Grand total is 16 elements using 178 bytes
load 函数从磁盘文件中重新调入变量内容到工作区中。
load 函数的语法为:
load
load filename
load filename X Y Z…
load -ascii filename
load -mat filename
参数说明:
fread 函数从文件中读取二进制数据。fread 函数的语法为:
A = fread(fid)
A = fread(fid, count)
A = fread(fid, count, precision)
A = fread(fid, count, precision, skip)
A = fread(fid, count, precision, skip, machineformat)
[A, count] = fread(…)
fread 函数从指定文件 fid 中读取二进制数据,将数据写入到矩阵 A 中。可选输出 count 返回成功读入元素个数;fid 为文件标识符,其值由 fopen 函数得到;可选参数 count 确定读入多少数据,如果不指定参数 count,则一直读到文件结束为止。
参数 count 合法选择如下。
精度表示读入数据精度的字符串,控制读入数据精度。MATLAB 中精度如下表所示。
精度 | 说明 | 精度 | 说明 |
---|---|---|---|
'uchar' | 无符号字符:8 位 | 'uint16' | 无符号整数:16 位 |
'schar' | 有符号字符:8 位 | 'uint32' | 无符号整数:32 位 |
'int8' | 整数:8 位 | 'uint64' | 无符号整数:64 位 |
'int16' | 整数:16 位 | 'single' | 浮点数:32 位 |
'int32' | 整数:32 位 | 'float32' | 浮点数:32 位 |
'int64' | 整数:64 位 | 'double' | 浮点数:64 位 |
'uint8' | 无符号整数:8 位 | 'float64' | 浮点数:64 位 |
参数 skip 确定每次读操作跳过的字节数。
fwrite 函数向文件中写入二进制数据。fwrite 函数的语法为:
[count, errmsg] = fwrite(fid, A, precision)
[count, errmsg] = fwrite(fid, A, precision, skip)
fwrite 函数将矩阵 A 中的元素写入指定文件 fid 中,将其值转化为指定的精度。fid 由 fopen 函数指定, count 返回成功写入文件中的元素个数。参数 skip 指定每次写操作跳过指定字节。
fscanf 函数按指定的格式从文件中读取数据。fscanf 函数的语法为:
A = fscanf(fid, format)
[A,count] = fscanf(fid, format, size)
fscanf 函数从由 fid 所指定的文件中读取数据,并根据格式字符串进行转换,同时返回给矩阵 A。参数 size 指定数据的长度,参数 count 返回成功读入的数据长度。
fprintf 函数向文件中写入格式化数据。fprintf 函数的语法为:
count = fprintf(fid, format, A…)
fprintf 函数将矩阵 A 或其他矩阵的实部数据按“格式字符串”指定的形式进行格式化,并将其写入指定的文件 fid 中,count 返回值为写入的数据长度。
fgets 函数以字符串形式返回文件中的下一行内容,包含行结束符。fgets 函数的语法为:
tline = fgets(fid)
tline = fgets(fid, nchar)
fgets 函数返回文件标识符 fid 的文件中下一行内容,如果遇到文件结尾(EOF),则返回 -1,所返回的字符串中包含文本结束符。nchar 指定返回的字符个数,在遇到行结束符时不追加字符。
fgetl 函数以字符串形式返回文件中的下一行内容,但不包含行结束符。fgetl 函数的语法为:
tline = fgetl(fid)
fgetl 函数返回文件标识符fid的文件中下一行内容,如果遇到文件结尾,则返回 -1,所返回的字符串中不包含行结束符。
ferror 函数查询 MATLAB 关于文件输入/输出操作的错误。ferror 函数的语法为:
message = ferror(fid)
ferror 函数将文件标识符 fid 的已打开文件的错误信息返回给 message 变量。
feof 函数测试指定文件是否设置了文件结尾 eof。如果返回 1,表示设置了 eof 指示器;返回 0,则表示未设置 eof 指示器。
feof 函数的语法为:
eofstat = feof(fid)
更多...
加载中...