MATLAB经典教程第六章_程序接口_第1页
MATLAB经典教程第六章_程序接口_第2页
MATLAB经典教程第六章_程序接口_第3页
MATLAB经典教程第六章_程序接口_第4页
MATLAB经典教程第六章_程序接口_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第六章 文件IO&程序接口n文件IO 高级例程 低级例程n编程示例n程序接口6.1 文件IO数据导入数据导入/导出导出:MATLAB提供了强大的提供了强大的数据处理数据处理能力,但是在数能力,但是在数据处理之前,可能需要据处理之前,可能需要导入数据导入数据,处理完之后,可能需,处理完之后,可能需要要导出数据导出数据。 例子例子: 有一有一excel文件(文件(oilprice_simple.xls)存放存放了石了石油价格的数据,想要绘图显示时间油价格的数据,想要绘图显示时间-价格曲线,如何处理?价格曲线,如何处理?Note:绘图等都没有问题了,但是数据如何从:绘图等都没有问题了,但是数

2、据如何从excel导入导入到到matlab环境?环境?6.1 文件IOMatlab提供了如下文件读写的方式:提供了如下文件读写的方式:1)高级例程高级例程: matlab特有的特有的mat文件文件 指令指令: save、load;2) 低级例程低级例程: 一般的二进制文件一般的二进制文件 指令:指令:fopen、fread、fwrite、fclose3)其他常见文件类型的操作其他常见文件类型的操作: excel文件、图像、视频文件、图像、视频avi等;等;6.1 文件IO Mat文件格式文件格式:文件头部文件头部+变量名变量名+变量数据变量数据。1)头部)头部:包括:包括MATLAB版本信息、

3、使用的操作系统平台和文件创版本信息、使用的操作系统平台和文件创建时间。建时间。2)数据)数据:按照数据类型、数据长度和数据三个部分保存:按照数据类型、数据长度和数据三个部分保存的。的。 数据长度数据类型数据长度数据类型描述文字(124字节)标识版本6.1 文件IO6.1.1 高级例程高级例程 1)save: 将当前工作空间中的变量将当前工作空间中的变量保存保存成成MAT文件文件, 2)load: 将将MAT文件文件中的数据中的数据导入导入到到MATLAB的工作空间中。的工作空间中。 note:load和和save指令不仅能够加载和保存指令不仅能够加载和保存MAT格式格式的数据文件,而且还能够加

4、载一般的文本格式文件。的数据文件,而且还能够加载一般的文本格式文件。 save指令基本语法:指令基本语法: 1)save filename var1 var2. 将工作空间中的变将工作空间中的变 量量var1、var2等保存到指定文件等保存到指定文件中;中;2)save(filename,.) save指令的函数格式用法指令的函数格式用法 例子:创建一个例子:创建一个magic矩阵,并保存。矩阵,并保存。 save指令指令 例子例子:创建一个:创建一个magic矩阵矩阵A,求其逆矩阵,求其逆矩阵B,将,将A、B保存到保存到magic.mat文件中去。文件中去。Code(save_load_ex

5、am.m)magicMat=magic(4);magicInv=inv(magicMat);save magic.mat magicMat magicInvNote: save指令后不用加分号指令后不用加分号“;”。 load指令:指令: save-保存保存(write);load载入载入(read) load指令的基本语法:指令的基本语法:1)load filename 将指定文件中将指定文件中所有所有的变量加载到当前的工作空间的变量加载到当前的工作空间2)load filename var1 var2 . 将指定文件中将指定文件中指定指定的变量加载到当前工作空间的变量加载到当前工作空间 l

6、oad指令:指令: 例子例子:将:将magic.mat载入载入matlab workspace。 code: (save_load_exam.m) load magic.mat disp(magicMat); disp(magicInv); 6.1 文件IO6.1.2 文本文件操作文本文件操作 针对其他常用的文件格式(针对其他常用的文件格式(非非mat文件文件)。)。6.1 文件IO例子例子: 从从excel文件读取石油价格数据文件读取石油价格数据,并保存到并保存到mat文件。文件。Code (oil_price_process.m)fnm=oilprice_simple.xls;dat=xl

7、sread(fnm); %读取对应的xls文件year=dat(:,1);pday=dat(:,2);pnow=dat(:,3);save oilprice.mat year pday pnow; 6.1 文件IO6.1.2 低级例程低级例程 底层的文件操作底层的文件操作,包括基本的,包括基本的open、close、read、write。1) 打开文件打开文件 fid = fopen(filename, flag);其中,其中,flag为控制文件读写的标识符,它的取值可以为为控制文件读写的标识符,它的取值可以为 * r表示打开的文件进行表示打开的文件进行读读的操作。的操作。 * w表示打开的文

8、件进行表示打开的文件进行写写的操作,若文件不存在则的操作,若文件不存在则创建新的文件。创建新的文件。 6.1 文件IO6.1.3 低级例程低级例程1) 打开文件打开文件 note:1)若能够成功地打开文件,则)若能够成功地打开文件,则fid为非负的整数,为非负的整数,否则为否则为-1。 2)关闭文件:)关闭文件: status = fclose(fid)若函数运行成功,则若函数运行成功,则status为为0,否则为,否则为-1。 3) 读写数据读写数据 MATLAB提供了两大类低级文件提供了两大类低级文件I/O函数进行文件内容函数进行文件内容的读写:的读写: 1)二进制文件读写函数二进制文件读

9、写函数 2)文本文件读写函数文本文件读写函数 note:底层例程类似:底层例程类似c语言。语言。6.1 文件IO6.1.4 其他类型文件的操作其他类型文件的操作 1)图像图像: imread、imwrite等等 2)视频视频6.1 文件IO6.1.4 例子例子 例子例子:最简单的办法是使用界面导入向导,打开文件最简单的办法是使用界面导入向导,打开文件菜单中的导入数据而后按提示操作。菜单中的导入数据而后按提示操作。Matlab支持的主要数支持的主要数据文件类型和对应函数如下:据文件类型和对应函数如下: 6.1 文件IOn导入文本文件导入文本文件 文本文件需要具备统一的行列模式,使用分隔符作为数据

10、项间隔,这些分隔符包括空格、逗号、tab、分号或其它。数据文件可能附带标题行和行列头标签。 n数值数据数值数据 对于数值数据可以直接使用load函数装载,例如my_data.txt中数据如下: 1 2 3 4 5 6 7 8 9 10 命令A = load(my_data.txt)装载该文本文件数据。 如果数值数据使用其它分隔符,可以使用dlmread读入,假设my_data.txt中数据如下: 7.2;8.5;6.2;6.6 5.4;9.2;8.1;7.2 命令A = dlmread(my_data.txt, ;)读入该数据。 n包含行列标签的数值数据包含行列标签的数值数据 例如: Grad

11、e1 Grade2 Grade3 78.8 55.9 45.9 99.5 66.8 78.0 89.5 77.0 56.7 fid = fopen(grades.dat, r); grades = textscan(fid, %f %f %f, 3, headerlines, 1); fclose(fid); n包含字符和数值的混合数据包含字符和数值的混合数据 n使用textread函数读入。它可以按列读取ascii 文件中的元素,每一列中可能含有不同的数据类型。这函数读取其他程序生成的数据表时非常地有用。n这个命令的形式如下na, b, c, . = textread(filename, f

12、ormat, n)n其中filename 代表要打开的文件的名字,format 是用于每一行数据类型的字符串,n 代表要读取的行数(如果没有n,则这个命令将读完这个文件)。格式化字符串与函数fprintf 格式化描述的字符串相同。注意输出参数的个数必须与你读取的列数相区配。n例如,假设文件test_input.dat 包含下列数据nJames Jones O+ 3.51 22 YesnSally Smith A+ 3.28 23 NOn这些数据用下面的函数读取一系列的数组。nfirst, last, blood, gpa, age, answer = textread(test_input.d

13、at,%s %s %s %f %d %s)n当这个函数被运行时产生如下结果nfirst =nJamesnSallynlast =nJonesnSmithblood =O+A+gpa =3.51003.2800age =2223answer =Yes导出文本文件导出文本文件 nsave函数 A = 1 2 3 4 ; 5 6 7 8 ; save my_data.out A ASCII dlmwrite函数 dlmwrite(my_data.out,A, ;) nxlsinfo获得文件信息获得文件信息 使用命令type, sheets = xlsfinfo(filename)返回文件类型type

14、和工作表信息。如:type, sheets = xlsfinfo(tempdata.xls) nXlswrite导出数据导出数据 d = Time, Temp; 12 98; 13 99; 14 97 命令xlswrite(tempdata.xls, d, Temperatures, E1)将单元格数组d的数据写出至tempdata.xls文件,新建工作表Temperatures,从该工作表的E1单元格开始写入。 6.1 文件IO小结:小结:文件文件IO关注的是数据的导入与导出的问题;关注的是数据的导入与导出的问题;Matlab特有的文件格式是特有的文件格式是.mat文件,通过文件,通过sav

15、e load指令指令可以读写文件;可以读写文件;针对常用的文件格式,比如图像针对常用的文件格式,比如图像(bmp/jpg),excel文件文件等等matlab提供了高级例程;提供了高级例程;Matlab提供了从磁盘文件或剪贴簿转载数据至工作区(数据导入)和将工作区变量存 入磁盘文件(数据导出)的多种途径。 6.2 应用程序接口Matlab与与c/c+的混合编程:的混合编程: 根据根据主程序框架主程序框架的语言类型划分:的语言类型划分: a)matlab中调用中调用c/c+ 编写编写mex文件文件; b)c/c+中调用中调用matlab i)matlab计算引擎计算引擎 ii)第三方组件:)第三方组件:matcom iii)com组件组件:新版本的:新版本的matlab的功能。的功能。6.2 应用程序接口6.2.1 mex文件文件1)在)在MATLAB中可调用的中可调用的C或或Fortran语言程序语言程序称为称为MEX文件

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论