matlab中二进制数据读取

上传人:第*** 文档编号:61772212 上传时间:2018-12-12 格式:PDF 页数:23 大小:243.43KB
返回 下载 相关 举报
matlab中二进制数据读取_第1页
第1页 / 共23页
matlab中二进制数据读取_第2页
第2页 / 共23页
matlab中二进制数据读取_第3页
第3页 / 共23页
matlab中二进制数据读取_第4页
第4页 / 共23页
matlab中二进制数据读取_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《matlab中二进制数据读取》由会员分享,可在线阅读,更多相关《matlab中二进制数据读取(23页珍藏版)》请在金锄头文库上搜索。

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

2、制数据的存写 使用 I/O 文件函数进行数据读写 MAT 文件的读写 2.12.1 文件的打开和关闭文件的打开和关闭 2.1.12.1.1 文件的打开文件的打开 无论是要读写 ASCII 码文件还是二进制文件,都必须先用 fopen 函数将其打开, 在默认情况下,fopen 以二进制格式打开文件,它的使用语法如下: fopen (filename, mode) 其中 filename 表示要读写的文件名称,mode 则表示要对文件进行的处理方式, 可以是表 2-1 中的任一字符串。 表 2-1 文本文件打开的模式 mode 意 义 rt 以只读方式(Reading)打开文件 wt 以只写方式(

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

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

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

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

7、能够进行文件读写,这 些函数都是 MATLAB 的一部分,不需要额外的工具箱支持。 2.2.12.2.1 从文本文件中读取数据从文本文件中读取数据 1 1使用导入模板来读取数据使用导入模板来读取数据 使用导入模板来读取数据,需按以下步骤进行: (1) 选择 FileImport Data 选项,然后弹出一个文件选择对话框;也可以使用 uiimport 函数来打开导入数据模板。 (2) 在文件选择对话框中选择想导入数据的文本文件,然后单击 Open 按钮,导 入数据模板就会打开该文件并准备处理其内容。 (3) 指定用于分开单个数据的字符,该字符称为分隔符或列分隔符。在多数情况 下可以用导入模板来

8、设定分隔符。 (4) 选择要导入的变量。在默认情况下,导入模板将所有的数值数据放在一个变 量中,而将文本数据放在其他变量中。 (5) 单击 Finish 按钮完成数据的导入。 当使用导入模板来打开一个文本文件时, 在导入模板对话框的预览区仅显示原始 数据的一部分,通过它,用户可以验证该文件中的数据是否为所期望的。导入模 板也根据文件中的数据分隔符来对导入的数据进行预处理。 在导入模板中打开工 作区中的 grade.txt 文件。 english math physic joe 80 90 60 susan 78 98 88 rob 67 90 89 图 2-1 将数据通过模板导入 在图 2-1

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

10、它们放在另外一个变量中;若文件包含行或列,模板也将它 们作为各自独立的变量分别称为行头和列头。 当所有导入模板创建好数据后,使用 whos 命令可以查看工作空间的变量。 whos Name Size Bytes Class Attributes data 3x3 72 double textdata 4x1 314 cell 2. 2. 使用函数来读取文本数据使用函数来读取文本数据 若要在命令行或在一个 M 文件中读取数据,必须使用 MATLAB 数据函数,函数 的选择则是依据文本文件中数据的格式。 而且文本数据格式在行和列上必须采取 一致的模式, 并使用文本字符来分隔各个数据项, 称该字符为

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

12、ad 数值数据 仅 space 1 textread 字母和数值 任何字符 多返回值 3. 3. 读取数值文本数据读取数值文本数据 若用户的数据文件只包含数值数据,则可以使用许多 MATLAB 函数,这取决于这 些数据采用的分隔符。若数据为矩形形状,也就是说,每行有同样数目的元素, 这时可以使用最简单的命令 load(load 也能用于导入 MAT 文件, 该文件为用于存 储工作空间变量的二进制文件,如果文件名后缀是.dat,则 MATLAB 会以 MAT 文 件格式进行读取)。 例如,文件 my_data.txt 包含了两行数据,各数据之间由 space 字符隔开。 当使用 load 时,它

13、将读取数据并在工作空间中建立一个与该文件同名的变量, 但不包括扩展名。 load my_data.txt; 调用 whos 命令查看工作空间的变量。 whos Name Size Bytes Class Attributes data 3x3 72 double my_data 3x4 9 6 double textdata 4x1 314 cell 此时可以查看与该文件同名的变量的值 my_data my_data = 0.3242 0.4324 0.3455 0.6754 0.4566 0.9368 0.9892 0.9274 0.4658 0.2832 0.9373 0.8233 若想将

14、工作空间的变量以该文件名命名,则可以使用函数形式的 load,下面的 语句将文件导入工作空间并赋给变量 A A=load(my_data.txt); 4. 4. 读取有分隔符的读取有分隔符的 ASCIIASCII 数据文件数据文件 如果数据文件不使用空格符而是使用逗号或是其他符号作为分隔符, 用户可以选 择多个可用的导入数据函数。最简单的便是使用函数 dlmread。 举个例子来说,一个名为 lcode.dat 的数据文件,数据内容由逗号分隔。 0.3445,0.8433,0.7865 0.7562,0.4233,0 要把该文件的全部内容读入阵列 A,只须输入如下命令: A=dlmread(l

15、code.dat,) 即可以把数据文件中使用的分隔符作为函数 dlmread 的第二个参数。 注意: 即使每行的最后一个数据后面不是逗号,dlmread 函数仍能正确读取数据,因为 dlmread 忽略了数据之间的空格符。 因此, 即使数据为如下格式, 前面的 dlmread 命令仍能正常工作。 A = 0.3445 0.8433 0.7865 0.7562 0.4233 0 另外需要注意的是,分隔符只能选取单个字符,不能用字符串来作为分隔符。 5. 5. 使用文本头读取数值数据使用文本头读取数值数据 要读取一个包含文本头的 ASCII 码数据文件,可以使用 textread 函数,并指定 头行参数。调用函数 textread 同样非常简单,同时对文件读取的格式处理能力 更强,函数接收一组预先定义好的参数,由这些参数来控制变量的不同方面。 Textread 既能处理有固定格式的文件,也可以处理无格式的文件,还可以对文 件中每行数据按列逐个读取。 textread 函数常见的调用方法有如下几种: A,B,C=textread(filename, format) A,B,C=textread(filename

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号