• MATLAB文件的I/O函数操作

    本节介绍 MATLAB 中的 10 种文件 I/O 的操作函数。

    save 函数

    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 …

    参数说明:

    • save 将工作区中的所有变量保存在名为 MATLAB.mat 的二进制格式文件中,该文件可通过 load 命令来重新装入工作区。
    • save('filename') 将工作区中的所有变量保存为文件,文件名为 filename.mat。如果 filename 中包含路径,则将文件保存在相应目录下,否则默认路径为当前路径。
    • save('filename', 'var1', 'var2' …) 保存指定的变量在文件 filename.mat 中。
    • save('filename', '-struct', 's') 保存结构体 s 中全部域作为单独的变量,文件名为 filename.mat。
    • save('filename', '-struct', 's', 'f1', 'f2'…) 保存结构体 s 中指定的域 (s.f1,s.f2),文件名为 filename.mat。
    • save(…, 'format') 指定文件的保存格式,格式可以为 MAT 文件、ASCII 文件等。

    format 可以为以下几种形式。

    • -ascii:以 8 位 ASCII 格式保存数据。
    • -ascii –double:以 16 位 ASCII 格式保存数据。
    • -ascii –tabs:以 8 位 ASCII 格式保存数据,使用 Tab 作分隔符。
    • -ascii –double –tabs:以 16 位 ASCII 格式保存数据,使用 Tab 作分隔符。
    • -mat:二进制 MAT 格式保存数据(默认格式)。

    示例1

    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
    load filename
    load filename X Y Z…
    load -ascii filename
    load -mat filename

    参数说明:

    • load:如果 MATLAB.mat 文件存在,导入 MATLAB.mat 中的所有变量;如果不存在,则返回 error。
    • load filename:将 filename.mat 中的全部变量导入到工作区中。
    • load filename X Y Z…:将 filename.mat 中的变量 X、Y、Z 等导入到工作区中。
    • load -ascii filename:无论输入文件名是否包含有扩展名,将其以 ASCII 格式导入,如果指定的文件不是数字文本,则返回 error。
    • load -mat filename:无论输入文件名是否包含有扩展名,将其以 MAT 格式导入,如果指定的文件不是 MAT 文件,则返回 error。

    fread 函数

    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 合法选择如下。

    • n:读取 n 个元素到一个列向量。
    • inf:读到文件结束,返回一个与文件数据元素相同的列向量。
    • [m,n]:读取元素填充一个 m 行 n 列的矩阵,填充按列进行,如果文件读入数据不够,则填充 0。

    精度表示读入数据精度的字符串,控制读入数据精度。MATLAB 中精度如下表所示。

    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 函数向文件中写入二进制数据。fwrite 函数的语法为:

    [count, errmsg] = fwrite(fid, A, precision)
    [count, errmsg] = fwrite(fid, A, precision, skip)

    fwrite 函数将矩阵 A 中的元素写入指定文件 fid 中,将其值转化为指定的精度。fid 由 fopen 函数指定, count 返回成功写入文件中的元素个数。参数 skip 指定每次写操作跳过指定字节。

    fscanf 函数

    fscanf 函数按指定的格式从文件中读取数据。fscanf 函数的语法为:

    A = fscanf(fid, format)
    [A,count] = fscanf(fid, format, size)

    fscanf 函数从由 fid 所指定的文件中读取数据,并根据格式字符串进行转换,同时返回给矩阵 A。参数 size 指定数据的长度,参数 count 返回成功读入的数据长度。

    fprintf 函数

    fprintf 函数向文件中写入格式化数据。fprintf 函数的语法为:

    count = fprintf(fid, format, A…)

    fprintf 函数将矩阵 A 或其他矩阵的实部数据按“格式字符串”指定的形式进行格式化,并将其写入指定的文件 fid 中,count 返回值为写入的数据长度。

    fgets 函数

    fgets 函数以字符串形式返回文件中的下一行内容,包含行结束符。fgets 函数的语法为:

    tline = fgets(fid)
    tline = fgets(fid, nchar)

    fgets 函数返回文件标识符 fid 的文件中下一行内容,如果遇到文件结尾(EOF),则返回 -1,所返回的字符串中包含文本结束符。nchar 指定返回的字符个数,在遇到行结束符时不追加字符。

    fgetl 函数

    fgetl 函数以字符串形式返回文件中的下一行内容,但不包含行结束符。fgetl 函数的语法为:

    tline = fgetl(fid)

    fgetl 函数返回文件标识符fid的文件中下一行内容,如果遇到文件结尾,则返回 -1,所返回的字符串中不包含行结束符。

    ferror 函数

    ferror 函数查询 MATLAB 关于文件输入/输出操作的错误。ferror 函数的语法为:

    message = ferror(fid)

    ferror 函数将文件标识符 fid 的已打开文件的错误信息返回给 message 变量。

    feof 函数

    feof 函数测试指定文件是否设置了文件结尾 eof。如果返回 1,表示设置了 eof 指示器;返回 0,则表示未设置 eof 指示器。

    feof 函数的语法为:

    eofstat = feof(fid)

更多...

加载中...