欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    Matlab的各种数据读取文件读写等操作汇总.docx

    • 资源ID:16488170       资源大小:75.66KB        全文页数:14页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Matlab的各种数据读取文件读写等操作汇总.docx

    1、Matlab的各种数据读取文件读写等操作汇总Matlab 的各种数据读取、文件读写等操作汇总MATLAB 提供了多种方式从磁盘读入文件或将数据输 入到工作空间,即读取数据,又叫导入数据;将工作空间的 变量存储到磁盘文件中称为存写数据,又叫导出数据。至于 选择哪种机制,则根据下面两个因素决定: 用户所执行的操作是导入数据还是导出数据; 数据的格式为文本格式、二进制格式还是如 HDF 之类的标准格式。将数据导入 MATLAB 中最容易的方法就是使用导入数据模板 (Import Wizard) ,使用该模板时不需要知道数据的格式, 只需指定包 含这些数据的文件,然后导入模板会自动处理文件内容。本 章

    2、重点内容如下: 文件的打开和关闭 文本文件的读取 存写ASCII数据二进制数据的读取 二进制数据的存写 使用I/O文件函数进行数据读写 MAT文件的读写2.1 文件的打开和关闭 2.1.1 文件的打开 无论是要读 写 ASCII 码文件还是二进制文件, 都必须先用 fopen 函数将 其打开,在默认情况下, fopen 以二进制格式打开文件,它 的使用语法如下: fopen (filename, mode) 其中 filename 表示要读写的文件名称, mode 则表示要对文件进行的处理 方式,如下:rt :以只读方式(Reading)打开文件wt:以只写 方式(Writing)打开文件at

    3、:以追加方式(Appending)打开文件, 新内容将从原文件后面续写 r+t:以同时读写方式打开文件 w+t :以同时读写创建文件,原文件内容被清除 a+t :以同时 读和追加 (Reading and Appdending) 方式,原文件内容被保 留,新内容将从原文件的后面开始 At :以读写方式打开或创 建文件,适用于对磁带介质文件的操作 Wt :以写入方式打 开或创建文件,原文件内容被清除,适用于磁带介质文件的 操作fopen 函数有两个返回值, 一个是返回一个文件标志 (file Identifier) ,它会作为参数被传入其他对文件进行读写操作的 命令,通常是一个非负的整数,可用此

    4、标识来对此文件进行 各种处理。如果返回的文件标识是-1,则代表fopen无法打 开文件,其原因可能是文件不存在,或是用户无法打开此文 件权限。 另一个返回值就是 message ,用于返回无法打开文 件的原因。为了安全起见,最好在每次使用 fopen 函数时, 都测试其返回值是否为有效值。 下面以脚本 m 文件为例来声 明文件的打开。例2-1 %exam1.mf,message=fopen(fileexam1, r)if f=-1disp (message); % 显示错误信息 end 若文件 fileexam1 不存在,则显示如下信息。 Cannot open file.existence?

    5、permissions?memory?.例 2-2 %exam2.mf,message=fopen(fileexam2, r);if f=-1disp (message); % 显示错误信息 else disp(f);end 若文件fileexam2 存在,则返回f值。2.1.2 文件的关闭一旦完成文件的读写, 最好关闭文件, 以 便对其进行其他操作。 这时就可以使用 fclose 函数来关闭文 件,其适用语法如下: fclose(f) 。其中 f 为打开文件的标志, 若 fclose 函数返回值为 0 ,则表示成功关闭 f 标志的文件; 若返回值为-1,则表示无法成功关闭该文件。一般来说,在

    6、 完成对文件的读写操作后就应关闭它,以免造成系统资源浪 费。此外,需注意的是,打开和关闭文件都比较耗时,因此 为了提高程序执行效率,最好不要在循环体内使用文件。若 要一次关闭打开的所有文件, 可以使用下面的命令: fclose all 2.2 文本数据虽然 MATLAB 自带的 MAT 文件为二进制文 件,但为了便于和外部程序进行交换以及方便查看文件中的 数据,也常常采用文本数据格式与外界进行数据交换。在文 本格式中,数据采用 ASCII 码格式,可以表示字母和数字字 符。 ASCII 文本数据可以在文本编辑器中查看和编辑。 MATLAB 提供多种函数能够进行文件读写,这些函数都是 MATLA

    7、B 的一部分,不需要额外的工具箱支持。 2.2.1 从 文本文件中读取数据 1 使用导入模板来读取数据使用导入 模板来读取数据,需按以下步骤进行: (1)选择File tImportData 选项,然后弹出一个文件选择对话框;也可以使用 uiimport 函数来打开导入数据模板。 (2) 在文件选择对话框 中选择想导入数据的文本文件,然后单击 Open 按钮,导入 数据模板就会打开该文件并准备处理其内容。 (3) 指定用于 分开单个数据的字符,该字符称为分隔符或列分隔符。在多 数情况下可以用导入模板来设定分隔符。 (4) 选择要导入的 变量。在默认情况下,导入模板将所有的数值数据放在一个 变量

    8、中,而将文本数据放在其他变量中。 (5) 单击 Finish 按 钮完成数据的导入。当使用导入模板来打开一个文本文件时, 在导入模板对话框的预览区仅显示原始数据的一部分,通过 它,用户可以验证该文件中的数据是否为所期望的。导入模 板也根据文件中的数据分隔符来对导入的数据进行预处理。 在导入模板中打开工作区中的 grade.txt 文件。 english math physicjoe 80 90 60susan 78 98 88rob 67 90 89 图 2-1 将数据通过模板导入在图 2-1 中,导入模板已辨认 space 字符,把它作为文件中数据的分隔符,并建立了两个 变量: data(

    9、包含文件中所有数值数据 )和 textdata( 包含文件 中所有文本数据 )。当导入模板正确导入文件中的数据后, 就 会显示它所建立的变量。要选择一个变量来导入数据,可单 击它名称后面的复选框。在默认情况下,所有变量都会被选 中。在导入对话框的右面显示了导入模板建立的变量内容。 要查看其他变量,只需要单击该名称。在选择好要导入的变 量后,单击 Next 按钮,如图 2-2 所示。图 2-2 使用模板查看各变量数据在默认情况下,导入模板 将文件中所有的数值数据放在一个变量中;若文件包含文本 数据,则模板将它们放在另外一个变量中;若文件包含行或 列,模板也将它们作为各自独立的变量分别称为行头和列

    10、头。whos 命令可以查看工当所有导入模板创建好数据后,使用 作空间的变量。 whosNameSizeBytesClassAttributesdata3x372doubletextdata4x1314cell2. 使用函数来读取文本数据若要在命令行或在一个M 文件中读取数据,必须使用 MATLAB 数据函数,函数的选择则是依据文本文件中数据的格式。而且文本数据格式在行和 列上必须采取一致的模式,并使用文本字符来分隔各个数据 项,称该字符为分隔符或列分隔符。分隔符可以是 space 、 comma 、 semicolon 、ab 或其他字符,单个的数据可以是字 母、数值字符或它们的混合形式。文本

    11、文件也可以包含称之 为头行的一行或多行文本,或可以使用文本头来标志各列或 各行。在了解要输入数据的格式之后, 便可以使用 MATLAB 函数来读取数据了。 若对 MATLAB 函数不熟悉, 可从表 2-2 中了解几个读取函数的一些使用特征。表 2-2 读取函数的 比较函 数 |数 据 类 型 |分 隔 符 返 回 值 csvread | 数值数据 |仅 cooma|1dlmread| 数值数据 | 任何字符 |1fscanf| 字母和数值 |任何字符 |1load| 数值数据 |仅space|1textread| 字母和数值 |任何字符 | 多返回值3.读取数值文本数据若用户的数据文件只包含数

    12、值数据, 则 可以使用许多 MATLAB 函数,这取决于这些数据采用的分 隔符。若数据为矩形形状,也就是说,每行有同样数目的元 素,这时可以使用最简单的命令 load(load 也能用于导入 MAT 文件,该文件为用于存储工作空间变量的二进制文件, 如果文件名后缀是 .dat ,则 MATLAB 会以 MAT 文件格式进 行读取 )。例如,文件 my_data.txt 包含了两行数据,各数据 之间由 space 字符隔开。当使用 load 时,它将读取数据并 在工作空间中建立一个与该文件同名的变量,但不包括扩展 名。 load my_data.txt; 调用 whos 命令查看工作空间的变 量

    13、。 whosName Size BytesClass Attributesdata 3x3 72 double my_data 3x4 96 double textdata文件同名的变量的值 my_data0.9373 0.8233 若想将工作空间的变量以该文件名命名, 则可以使用函数形式的 load ,下面的语句将文件导入工作空 间并赋给变量 AA=load(my_data.txt);4.读取有分隔符的 ASCII 数据文件如果数据文件不使用空 格符而是使用逗号或是其他符号作为分隔符,用户可以选择 多个可用的导入数据函数。 最简单的便是使用函数 dlmread 举个例子来说,一个名为 lco

    14、de.dat 的数据文件,数据内容 由逗号分隔。 0.3445,0.8433,0.78650.7562,0.4233,0 要把该 文件的全部内容读入阵列 A ,只须输入如下命令: A=dlmread(lcode.dat,) 即可以把数据文件中使用的分隔符 作为函数 dlmread 的第二个参数。注意:即使每行的最后一 个数据后面不是逗号, dlmread 函数仍能正确读取数据,因 为 dlmread 忽略了数据之间的空格符。因此,即使数据为如 下格式,前面的 dlmread 命令仍能正常工作。 A =0.3445 0.8433 0.7865 0.7562 0.42330 另外需要注意的是,分隔

    15、符只能选取单个字符,不能用字 符串来作为分隔符。5.使用文本头读取数值数据要读取一个包含文本头的ASCII 码数据文件,可以使用 textread 函数,并指定头行参 数。调用函数 textread 同样非常简单, 同时对文件读取的格 式处理能力更强,函数接收一组预先定义好的参数,由这些 参数来控制变量的不同方面。 Textread 既能处理有固定格式的文件,也可以处理无格式的文件,还可以对文件中每行数 据按列逐个读取。 textread 函数常见的调用方法有如下几种:A,B,C.=textread(filename,format)A,B,C.=textread(filename, forma

    16、t,N) 例如文件要使用如下 textread 命令来读取文件中的数据。 num1 num2 num3 num4=textread(my_data.txt,%f %f %f %f,headerlines,1)执行结果如下:num1 =0.32420.45660.4658num20.43240.93680.2832num30.34550.98920.9373num40.67540.92740.82336. 读取字母数值混合的数据若数据文件中包含了字母和数 值混合的 ASCII 码数据, 也可以使用函数 textread 来读取数 据。由上一小节知道, 函数 textread 可以返回多个输出变量

    17、, 实际上用户还可以通过参数指定每个变量的数据类型。例如 要把文件 my_exam.dat 的全部内容读入工作空间,需要在 textread 行数的输入参数中指定数据文件的名称和格式。文件 my_exam.dat 包含的混合的字母和数值如下: Joe gradeA 4.9 passsusan gradeD 2.0 fail 如果想把 4 列数据全部读取出放在 4 个变量中,则使用如下命令: name gra grades answer=textread(my_exam.dat,%s %s %f %s) 在这里要注意命令中格式字符串的定义,对于格式字符串中定义的每 种变换,必须指定一个单独的输出

    18、变量, textread 函数按格 式字符串中指定的格式处理文件中的某个数据项,并把值放 在输出变量中。输出变量的数目必须和格式字符串中指定的 变换数目项匹配,在该例中,函数按格式字符串来读取文件 my_exam.dat 的每一行,直到文件读完,该命令的执行结果 是: name =Joe susangra =gradeA gradeDgrades =4.9000 2.0000answer =pass fail另外,textread函数可以有选择地读取数据, 比如我们不需要取出中间几列数据,只取出第一列和最后一 列数据,则可以使用命令: name answer=textread(my_exam.

    19、dat,%s %*s %*f %s) name =Joe susananswer=pass fail若文件采用的分隔符不是空格, 则必须使用函数 textread ,将该分隔符作为它的参数。例如,若文件 my_exam.dat 使用分号作为分隔符,则读入该文件需使用如 下命令: name gra grades ans=textread(my_exam.dat,%s %s %f %s, delimiter, ;)2.2.2 存写 ASCII 码数据本小节介绍如何使用 MATLAB 函 数按几种通用的 ASCII 码格式来存写数据,即如何使用这些 函数来把一个 MATLAB 数值矩阵写入到一个文本

    20、文件中, 其中该矩阵的列和行使用空格符来分隔。用户采用什么函数 取决于所要存写数据的数据量和数据格式。常用的两种ASCII码数据格式如下: 采用空格符分隔; 采用分号分 隔。 MATLAB 的存写数据函数如表 2-3 所示。表 2-3 数据 存写函数函 数名称|适用数据|分 隔 符 csvwrite| 数 值数据 |逗号 diary| 数值数据或单元阵列 |空格 dlmwrite| 数值 数据|任何字符 fprintf| 字母和数值数据 |任何字符 save| 数值数 据|制表符或空格符1. 存写有分隔符的 ASCII 码数据文件若要将当前的MATLAB 工作空间的一个或多个变量写到一个有分隔

    21、符的ASCII 码文件中,可以使用 save 命令或 dlmwrite 函数。在 默认情况下, save 命令是以 MAT 格式存写数据的,这部 分内容我们在后面详细介绍,本小节主要介绍 save 命令通过 ASCII 码限定符以文本方式存写数据。 而 dlmwrite 函数则 可以提供更大的灵活性,它允许用户把任何字符指定为分隔 符,也可以通过指定一个值域存写一个阵列的子阵列。 clear all; x=rand(2,3); save my_test1.dat x -ascii; 该命令将变量 x 中的数据存写到 my_test1.dat 文件中。 通过文本 编辑器,我们可以查看该文件的内容

    22、: 9.2181297e-001 1.7626614e-001 9.3546970e-001 7.3820725e-001 4.0570621e-001 9.1690444e-001 我们也可以将命令中的 文件名和变量名省略,那样的话,命令的执行结果则是把当 前 MATLAB 工作空间中的所有变量保存到 matlab.mat 文件 中。需要指明的是这时的文件虽然后缀名为 .mat ,但文件内 容仍然是以文本方式保存的。 在默认情况下, save 命令使用 空格作为分隔符,但用户可以通过指定 -tabs 限定符来使用 制表符而不是空格符作为分隔符。当使用 save 命令把一个 字符阵列写入 AS

    23、CII文件时,将ASCII码写入文件也就等于 把字符写入文件。若要以 ASCII 码形式存写一个阵列,并指 定文件使用的分隔符, 需要使用 dlmwrite 函数, 比如重新指 定分号作为分隔符,把变量 x 存到文件 my_test2.dat 文件 中,查看其结果: 0.92181;0.17627;0.935470.73821;0.40571;0.9169 在默认 情况下, dlmwrite 函数用逗号或空格作为分隔符,或者是指 定空的引号,即无分隔符。2. 使用 diary 命令来存写数据较小的数值阵列或单元阵列的 存写可以使用 diary 命令,例如,在工作空间中有一个阵列 A: A=1

    24、2 3 4 5; 6 7 8 9 10 在命令提示符下执行如下命令: diary my_test3.dat ,就可以创建 my_test3.dat 文件。 接下来 显示要存写的阵列 A:A = 1 2 3 4 56 7 8 9 10 然后执行关闭 diary 命令: diary off 。这时,在文本编辑器中打开 my_test3.dat 文件, 会发现 diary 命令创建的文件记录了在 MATLAB 会话期间的 所有命令。 可以通过编辑, 删去无关的文本。 2.3 二进制数 据 2.3.1 二进制数据的读取 本小节将介绍怎样将一般 格式下的二进制数据文件读取到工作空间中。读取二进制数 据常

    25、用的方法有两种,一是使用导入模板来导入,二是使用 二进制数据导入函数来读取。 1. 使用导入模板读取二进制数 据要使用导入模板来读取二进制数据,需按以下步骤进行:(1)选择File t Import Data选项,弹出一个文件选择对话框; 也可以使用 uiimport 函数来打开导入数据模板。 (2) 在文件 选择对话框中选择想导入数据的二进制数据文件,然后单击 Open 按钮,导入数据模板就会打开该文件并准备处理其内 容。 (3) 选择要导入的变量。在默认情况下,导入模板将要 建立的变量取决于文件中的数据类型。 (4) 单击 Finish 按钮 完成数据的导入。这个过程和使用导入模板读取文本

    26、文件是 基本一致的, 这里就不再举例了。 2. 使用导入函数读取二进制数据若要从命令行或一个 M 文件中读取二进制数据,就 必须使用 MATLAB 导入函数,函数的选择取决于文件中数 据的格式,这些函数如表 2-4 所示。表 2-4 导入二进制数 据函数函 数 名 称 |读取文件的扩展名 |数 据 格 式 load|.mat| 读取 MATLAB 下的 MAT 数据格式的数据 aviread|.avi| 读取 AVI 格式的音频视频数据 cdfread|.cdf| 读取 CDF 格式的数据 hdf|.hdf| 读取 HDF 格式的数据 imread|.bmp .cur .gif .hdf .i

    27、co .jpg .pbm .pgm .p ng .pnm .ppm .pcx .tif .xwd .ras| 读取各种格式的 图形数据 wavread|.wav| 读取 Windows 系统的声音文件 xlsread|.xls| 读取 Excel 电子表格数据 2.3.2 二进制数据 的存写要以一种标准二进制格式来存写二进制数据,可以使 用 MATLAB 提供的高端函数,函数的选择取决于要存写数 据的类型,这些函数如表 2-5 所示。表 2-5 导出二进制数 据函数函 数 名 称 |读取文件的扩展名 |数 据 格 式 save|.mat| 存写 MATLAB 下的 MAT 数据格式的数据 av

    28、ifile|.avi| 存写 AVI 格式的音频视频数据 cdfwrite|.cdf| 存写 CDF 格式的数据 hdf|.hdf| 存写 HDF 格式的数据 imwrite|.bmp .cur .gif .hdf .ico .jpg .pbm .pgm . png .pnm .ppm .pcx .tif .xwd .ras| 存写各种格式 的图形数据 wavwrite|.wav| 存写 Windows 系统的声音文件 xlswrite|.xls| 存写 Excel 电子表格数据在 MATLAB 中可以将一系列的图像保存为电影,这样使用电影播放函数就可以进行回放,保存方法可以同保存其他 MAT

    29、LAB 工作空间变量一样, 通过采用 MAT 文件格式保存。 但是若要浏览该电影,必须在 MATLAB 环境下。在以某种 格式存写一系列的 MATLAB 图像时, 不需要在 MATLBA 环 境下进行预览,通常采用的格式为 AVI 格式。 AVI 是一种文 件格式,在 PC 机上的 Windows 系统或 UNIX 操作系统下 可以进行动画或视频的播放。若要以 AVI 格式来存写 MATLAB 图像,步骤如下: (1) 用 avifile 函数建立一个 AVI 文件。 (2) 用 addframe 函数来捕捉图像并保存到 AVI 文件 中。 (3) 使用 close 函数关闭 AVI 文件。注

    30、意:若要将一个 已经存在的 MATLAB 电影文件转换为 AVI 文件,需使用函 数 movie2avi 。函数原型为: movie2avi(mov,filename)movie2avi(mov,filename,param,v alue,param,value.)2.4 使用文件 I/O 函数前面介绍的都是MATLAB 中的一些高级函数,除此之外 MATLAB 还包含了 一组低端的文件 I/O 函数,如前面介绍的所有文件的打开和 关闭函数:fopen函数和fclose函数。这些函数是建立在 ANSI 标准 C 库中的 I/O 函数。若用户对 C 语言熟悉的话, 那么也 肯定熟悉这些函数。 比

    31、如,MATLAB文件I/O函数使用和C语言同样的编程模式等。 要读写这些数据, 需进行以下几步: (1) 使用 fopen 函数打开文件。 fopen 函数将会返回一个文 件标志,通过它,就可以使用其他所有的低端文件 I/O 函数。(2) 对文件进行操作,如:读写二进制数据、格式化读写文 本数据等。 (3) 使用 fclose 函数来关闭文件。 2.4.1 二进制 数据的读取使用 fread 函数可从文件中读取二进制数据,它 将每个字节看成整数,并将结果以矩阵形式返回。对于读取 二进制文件, fread 必须制定正确的数据精度。 fread 的基本 调用方法是: A=fread(fid) 其中

    32、 fid 是一个整数型变量,是通 过调用 fopen 函数获得的,表示要读取的文件标识符,输出 变量 A 为矩阵,用于保存从文件中读取的数据。例如文件 test.txt 的内容如下: test it 用 fread 函数读取该文件,输入 如下命令: f=fopen(test.txt,r) ; answer=fread(f) answer =116 101 115 116 32 105 116 输出变量的内容 是文件数据的 ASCII 码值,若要验证读入的数据是否正确, 通过下面的命令可以验证。 disp(char(ans1)test itfread 函数的第二个输入参数可以控制返回矩阵的大小,例如: f=fopen(test.txt,r


    注意事项

    本文(Matlab的各种数据读取文件读写等操作汇总.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开