zoukankan      html  css  js  c++  java
  • [精] Matlab I/O 输入输出——文本文件

    董为国:《深入浅出MATLAB7.x混合编程》

    Matlab提供多种能够进行文件读写的函数,这些函数是Matlab语言的一部分,并不需要任何额外的工具箱的支持。

    文本文件

    Matlab中对文件的读写函数可以分为2大类:高级函数低级函数。简单的说,高级函数的调用语法简单,方便使用;但是可定制性差,只适用某些特殊格式的文件类型,缺乏灵活性。

    在实际的使用中,很多人会推荐这样的一种选择原则:在读取文件时,尽量使用高级函数;在存写文件时尽量使用低级函数,因为高级函数存写文件时,文件的格式比较单一。

    高级命令

    常用的文本文件读写的高级函数包括以下8个:

    (1) 读:load

    load是Matlab中的一个内置函数。其主要功能是从文本文件或者MAT文件中把数据输入Matlab工作空间。

    如果各行的列数不相等,会出错。

    load的调用方式可以分为2种:

    命令形式:

    load bar.dat

    函数形式:

    [x] = load('bar.dat');

    (2) 读:importdata

    适合从文本文件或者特殊格式的二进制文件(比如.WAV等)中读取数据。importdata可以读取包含文字说明的文件,可以使用用户自定义的字符作为文件中每行各数据之间的分隔符,如不指定,自动以空格作为分隔符。如果各行的列数不同的话,importdata不会终止执行,而是会根据第一行的列数为准来决定输出矩阵的大小,所缺的列会以NaN代替。

    (3) 读:csvread

    用来读取用逗号隔开的数据文件。

    (4) 读:strread

    (5) 读:dlmread

    文件中不能包含说明文字。不过dlmread不但可以读取以逗号分割的数据文件,也可以读取那些用其它字符分割数据的文件。

    Matlab中.mat数据某变量保存为txt

    http://blog.csdn.net/boyhailong/article/details/7046488

    (6) 读:textread

    通过调用一个名为dataread.dll的MEX文件实现的。比前面提到的几个文件读取高级函数,textread同样具有调用语法简单的优点,同时对文件读取的可定制性更强。textread既能处理有固定格式的文件,也能处理无格式的文件,还能对文件每行的数据按列逐个读取。通常被用来处理一些已知格式的文件。{姓名,等级,X,Y,答案}

    Note: textread will be removed in a future version. Use 'textscan' instead. (Matlab 2011a)

    (7) 写:save

    save也是Matlab的一个内置函数,用来把当前Matlab工作空间的一个或者多个变量存入外部文件。在默认情况下,save命令以MAT格式存写数据,但也可以指定存写的文本方式。

    注意:save无法在文本文件中,保存复数变量。如果有复数时,save只保存它们的实部。另外,对于结构型变量,save只能保存结构型标量,而不能保存结构型变量数组。

    '-mat'  Binary MAT-file format (default).
    '-ascii'  8-digit ASCII format.
    '-ascii', '-tabs' Tab-delimited 8-digit ASCII format.
    '-ascii', '-double' 16-digit ASCII format.
    '-ascii', '-double', '-tabs'     Tab-delimited 16-digit ASCII format.

     

     

     

     

    For more flexibility in creating ASCII files, use 'dlmwrite' or 'fprintf'. (Matlab 2011a)

    (8) 写:dlmwrite

    Write matrix to ASCII-delimited file

     

    低级命令

    这些命令和C语言里对文件的读写函数非常类似。操作过程一般包括:打开文件;读写文件;关闭文件。

    常用的文件读写低级命令有如下7个:

    (1) fopen

    fopen能够打开文件,也能够从打开的文件中获得信息。默认情况下,fopen以二进制格式打开文件。

    注意:如果文件打开模式里用“+”,如“a+t”、“w+t”等,对文件的读和写必须用fseek或者frewind隔开。

    (2) fclose

    文件打开、使用后最好关闭,以方便对该文件的其他操作。使用fopen打开文件以后,系统会把这个文件标记为"正在使用";使用fclose会清除这个标记,否则会影响到对文件的修改、删除等操作。

    (3) fgetl

    能够读取指定文件中的一行内容,但不包括新行分隔符。用fopen打开文件后,文件的读取位置是文件开头的地方,以后每次调用fgetl,这个读取位置会自动更新到下一行,一直到文件结尾的地方。

    (4) fgets

    fgets的功能和fgetl类似,都是读取当前文件读取位置所对应的下一行内容。区别在于,fgets将包含该行的新行标志。

    (5) fscanf

    fscanf具有更多的灵活性,能够读取有格式的文本文件。

    注意:用%s读取字符串后,其中的每个字符会被看成是返回的矩阵里的一个元素。而且,%s会忽略文件中的空格键。如果需要读取空格,则必须用%c。

    (6) textscan

    textscan是Matlab 7.0新增加的内置函数。它能够更为高效和灵活地读取文本文件数据,其和高级命令textread相似,但textcan能够更好地处理大型文件。textscan能从文件的任何地方开始读取数据,对于数据的转换,textscan提供了更多的选项。

    注意:textscan读取数据最大值uint32(4294967295),文件中相应的数字如果大于这个数,则被这个极限数字代替。

    (7) fprintf

    fprintf能够以类似于ANSI C语言中的有关函数那样按照用户指定的格式把数据打印文本信息。根据调用参数的不同,fprintf可以在文件或者屏幕上输出结果。

    Write data to text file

  • 相关阅读:
    Linux停SVN提交时强制写日志
    svn文件提交时强制写注释
    ssh 登录出现的几种错误以及解决办法
    Linux内存调试工具初探-MEMWATCH
    段错误调试神器
    Linux环境下段错误的产生原因及调试方法小结
    pthread_create()之前的属性设置
    Linux netstat命令详解
    Linux route命令详解和使用示例(查看和操作IP路由表)
    tomcat最大线程数的设置
  • 原文地址:https://www.cnblogs.com/xfzhang/p/1913309.html
Copyright © 2011-2022 走看看