本章将会详细的介绍MATLAB的文件夹管理和常用的文件I/0操作。文件I/0操作是本章的重点,首先介绍了低级和高级文件I/0操作,然后介绍了利用MATLAB读取音频文件、图像文件和视频文件,最后介绍了利用MATLAB读取Excel表格文件。
文件夹管理主要包括:获取当前文件夹、目录的创建和删除等。MATLAB提供了很多文件夹操作函数,可以非常方便的建立和删除文件夹、获取当前文件夹下的文件等。在MATLAB中,提供了很多文件夹操作的命令,可以在MATLAB的命令行窗口列出当前的文件夹、显示文件和文件夹、以及新建文件夹和删除文件夹等。
命令 | 说明 |
pwd | 返回当前的文件夹 |
matlabroot | 返回matlab的安装文件夹 |
dir或ls | 显示当前文件夹中的文件和子文件夹 |
cd yourdir | 更改文件夹 |
cd | 进入上一层文件夹 |
what | 显示当前文件夹下的matlab文件 |
which filename | 返回文件filename的文件夹 |
mkdir newdir | 创建名字为newdir的文件夹 |
nmdir newdir | 删除名字为newdir的文件夹 |
isdir(var) | 判断变量var是否为文件夹 |
copyfile | 拷贝文件或文件夹 |
movefile | 移动文件或文件夹 |
tempdir | 系统的临时存储目录 |
tempname | 系统的临时文件名 |
在MATLAB中,有许多低级文件l/O操作函数。这些函数如表所示。首先利用函数fopen()打开文件,然后对文件的内容进行读写等操作,最后采用函数fclose()关闭该文件。
函数 | 说明 |
fopen | 文件打开 |
fclose | 文件关闭 |
fread | 二进制数据的读取 |
fwrite | 二进制数据的写入 |
fgetl | 逐行读取 |
fgets | 逐行读取 |
fscanf | 格式化读取 |
fprintf | 格式化写入 |
在MATLAB中,读写文件之前,必须先用函数fopen( )打开或创建文件,并指定对该文件进行的操作方式。在MATLAB中,文件在进行完读、写等操作后,应及时关闭文件,以免数据丢失。关闭文件采用函数fclose( ).在MATLAB中,采用函数fscanf()格式化读取文本文件,并按指定格式存入到矩阵中。在MATLAB中,采用函数fprintf(}将数据按指定格式写入到文本文件中。
在打开文件时,会产生一个文件标识,表示了文件中的当前位置。通过控制文件标识,来进行文件的读取和写入操作。获取文件位置的函数,如下表所示。
函数 | 说明 |
feof | 测试是否到文件尾 |
fseek | 将文件标识移到特定位置 |
frewind | 将文件标识移到文件头 |
ftell | 取得文件标识的位置 |
在MATLAB中,使用向导将外部的数据文件导入到MATLAB的工作空间中,然后就可以进行分析和处理了。如果数据文件中,有文本内容,需要进行特别的处理。下面进行详细的介绍。
在MATLAB中,可以使用向导将外部数据文件导入到MATLAB的工作空间中。如果MATLAB的工作空间窗口没有显示,则通过单击MATLAB主界面的Desktop|Workspace显示当前的工作空间窗口。工作空间窗口可以附着在MATLAB的主界面,也可以变为独立的窗口。利用向导来导入数据文件student.txt.
对于带有分隔符的数据文件,可以采用函数dlmread()导入对于带有分隔符的数据文件,可以采用函数dlmread()导入results=dlmread('filename'):该函数从数据文件filename导入到MATLAB的工作空间中。results=dlmread('filename', 'delimiter'):该函数设置分隔符delimiter.在MATLAB中,可以利用函数dlmwrite()将MATLAB工作空间中的矩阵,写入到文本文件中。如果数据文件的分割符为逗号(,),也可以采用函数csvread()读取该数据文件,利用函数csvwrite()向数据文件中写入数据。
在MATLAB中,采用函数textread()读取带有文本的数据文件。该函数的详细调用格式,可以在MATLAB的命令行窗口输入:help textread进行查看。在MATLAB中,可以采用函数importdata()将文件中的数据导入到MATLAB的工作空间。该函数的详细调用格式,可以查询MATLAB的帮助系统。
在MATLAB中,可以采用函数diary()记录用户和MATLAB的交互过程。该函数的调用格式如下:diary('filename')或diary filename:保存的文件名为filename。如果没有指定文件名,则文件名默认为diary.diary off:关闭。diary on:打开。diary:在diary on和diary off之间进行切换。
此外,在MATLAB中,还可以采用mat文件来保存数据,采用函数load()进行数据的导入,利用函数save()进行数据的导出。MATLAB还非常方便的导入科学标准格式数据,例如CDF( Common Data Format)、 FITS ( Flexible ImageTransport System) 、HDF (Hierarchical Data Format v.4)和H5 (Hierarchical Data Format v.5),用户可以查询MATLAB的帮助系统,查询这些数据的导入和导出函数。
利用MATLAB可以进行语音信号的分析和处理。在MATLAB中,可以读取、播放和写入wav格式的语音和AU格式的语音文件。下面分别进行介绍。常用的音频处理函数,如下表所示。
函数 | 说明 |
wavread | 读取wav文件 |
auread | 读取au文件 |
sound | 播放声音 |
wavplay | 利用windows的播放器来播放声音 |
soundsc | 播放归一化后的声音 |
wavrecord | 录音 |
wavfinio | 获取wav的信息 |
aufinio | 获取au的信息 |
wavwrite | 写入wav声音的文件 |
auwrite | 写入au声音的文件 |
在MATLAB中,采用函数wavread()读取Microsoft的wav格式音频文件到工作空间中。用户可以在MATLAB的命令行窗口输入:help wavread来获取该函数的详细信息。在MATLAB中,利用函数auread()将AU格式的语音文件读入到MATLAB的工作空间中。到MATLAB的工作空间中。函数sound( )、函数wavplay()和函数soundsc()。可以采用函数wavrecord()进行录音。下面分别进行介绍。
函数sound( )、函数wavplay()和函数soundsc()。可以采用函数wavrecord()进行录音。下面分别进行介绍。文件的信息,采用函数aufinfo()来获取AU格式的语音文件的信息。在MATLAB中,利用函数wavwrite()将数据保存到wav语音文件中。在MATLAB中,采用函数auwrite()写入AU格式的语音文件。
MATLAB能够读取、处理和显示多种标准图像文件。MATLAB的图像处理工具箱在安装目录下的matlabrootltoolboxlimages文件夹中。在文件夹matlabrootltoolboxlimageslimdemos中有一些常用的图像文件。在MATLAB中,常用的图像读取、写入和显示函数,如下表所示。下面进行详细的介绍。
函数 | 说明 |
imread | 读取图像文件 |
imwrite | 写入图像文件 |
imfinio | 获取图像文件的信息 |
imshow | 显示图像 |
imformats | 获取MATLAB支持的图像格式 |
image | 显示矩阵数据为图像 |
在MATLAB中,利用函数imfinfo()获取图像文件的详细信息,该函数的调用格式为:info=imfinfo( 'filename', 'fmt')。其中filename为图像文件名,fmt为图像的类型,该函数的返回值为一个结构体info,包含了该图象的各方面信息,其主要数据包括:文件名(路径)、图像格式、图像格式版本号、文件的修改时间、文件的大小、文件的长度、文件的宽度、每个像素的位数、图象的类型等。在MATLAB中,采用函数imwrite()进行图像的写入,该函数的调用格式为: imwrite(A,'filename', 'fmt')。其中A为图像数据的矩阵,按照fmt指定的格式将图象写入到文件filenake中。在MATLAB中,还可以通过函数image()将矩阵中的数据显示为图像。该函数的详细调用格式可以通过在MATLAB的命令行窗口输入:help image进行查询。此外,还有函数imagesc(),其调用格式和函数image( )完全相同,只是对数据进行了归一化。
在MATLAB中,视频对象称为MATLAB movie. MATLAB可以读入AVI视频文件,并进行视频的播放和保存等。MATLAB中,也可以将图像保存为帧,从而创建AVI视频文件。MATLAB中,常用的视频处理函数如下表示。
函数 | 说明 |
aviread | 读取avi视频文件 |
aviinfo | avi文件的信息 |
movie | 播放movie |
avifile | 创建avi视频文件 |
getframe | 获取视频帖 |
addframe | 添加视频帖 |
movie2avi | 将moive转成avi |
im2frame | 将图像转成视频 |
frame2im | 将视频转成图像 |
mmfileinfo | 获取多媒体文件的信息 |
close | 关闭avi视频文件 |
在MATLAB中,采用函数aviread()读取AVI格式的视频文件,该函数的调用格式为:mov=aviread('filename')。其中filename为AVI视频文件的文件名,函数的返回值mov为结构体变量,包含两个成员变量cdata和colormap。如果AVI视频中每一帧都是真彩色图像,则colormap为空。mov=aviread('filename', index):该函数只读取AVI视频中的图像帧,index可以为标量,读取某一帧;index也可以为矢量,读取某些帧。
在MATLAB中,利用函数aviinfo()来获取AVI视频文件的信息,该函数的调用格式为:info=aviinfo('filename')。其中,filename为AVI视频文件的文件名,info为结构体,包含AVI文件的信息,包括:文件名、大小、创建的日期、帧数、长和宽等。
在MATLAB中,利用函数movie2avi(将matlab中的视频保存为avi视频,该函数的调用格式为:movie2avi(mov, 'filename')。其中mov为MATLAB中的视频,保存后的AVI视频文件名为filename.在MATLAB中,利用函数avifile()创建视频文件,该函数的调用格式为: aviobj=avitile('t1ename 活粘灶人件名为filename的视频文件aviobj。通常通过函数addframe()添加帧到AVI视频中,最后通过close()函数关闭该视频文件。
利用MATLAB处理后的数据可以保存到Excel表单文件中,也可以将表单文件中的数据导入到MATLAB中。在MATLAB中,常用的表单文件处理函数。
MATLAB软件具有强大的数据计算和可视化能力,而且提供了大量的工具箱,方便各个领域的用户。MATLAB软件提供了强大的接口,可以和Word和Excel等软件进行数据交互。通过MATLAB软件自带的Notebook工具可以和Word软件结合在一起,在Word文档中执行MATLAB函数和程序,然后将结果返回到Word文档中。Excel link是MATLAB软件和Excel软件进行链接的插件,可以方便的进行MATLAB的工作空间和Excel文件之间进行数据交换,还可以在Excel文件中执行MATLAB函数和程序。本章将详细的介绍Notebook工具和Excel link工具。
MATLAB软件通过Notebook可以和Word软件进行数据的交换。微软公司的Word软件在文字处理领域应用非常的广泛。MATLAB中的Notebook允许用户在Word中编写程序,然后送到MATLAB软件中执行,最后将结果返回到Word软件中。
MATLAB的Notebook制作的M-book文档不仅拥有Word的全部文字处理功能,而且具备MATLAB无与伦比的矩阵计算和数据可视化功能。
Excel Link是Excel软件和MATLAB进行链接的插件,通过Excel Link工具,用户可以在Excel软件中调用MATLAB中的函数进行数据处理和图像处理等,也可以将MATLAB软件中计算的结果或图像传送到Excel文件中。Excel link工具实现了Excel软件和MATLAB软件的数据交换和同步更新。
如果在启动Excel软件时,没有启动MATLAB软件和Excel link。用户可以在Excel软件的数据表中输入:=MLopen( ),来启动MATLAB软件。或者,用户也可以在宏窗口中执行宏命令: MLopen,来启动MATLAB软件和Excel link。如果用户需要在Excel文件中终止MATLAB软件和Excel link的运行,可以在Excel文件的数据表中输入:=MLclose()来关闭MATLAB软件,终止Excel link的执行。此外,用户还可以在宏窗口中,执行宏命令:MLclose,来关闭MATLAB软件,从而终止Excel link的执行。
函数 | 说明 |
xlsread | 读取微软的excel表单文件 |
xlsfinfo | 获取execl表单文件的信息 |
xlswrite | 将数据写入excel表单文件 |
wklread | 读取lotus 123表单文件 |
wklfinio | 获取lotus 123表单文件信息 |
wklwrite | 将数据写入lotus 123表单数据中 |
在MATLAB中,才用函数xlsread()读取Excel文档中的数据,该函数的调用格式为:[numeric, txt,raw]=xlsread('filename'):该函数读取Excel文件filename,数值内容保存在numeric中,文本内容保存在txt中,未处理的单元内容保存在raw中。[numeric, txt,raw]=xlsread('filename', 'sheet'):该函数读取文件filename中的表单sheet的内容。[numeric, txt, raw]=xlsread('fikename', 'sheet', 'range'):该函数设置读取的表单的范围为range.
在MATLAB中,利用函数xlsfinfo()获取Excel表单文件的详细信息,该函数的调用格式为:[A, descr,format]=xlsfinfo('filename')。该函数返回表单文件filename的类型和表的信息。
在MATLAB中,利用函数xlswrite()向Excel表单中写入数据,该函数的调用格式为:[success, message]=xlswrite('file', array):该函数向Excel文件file中写入数据array。默认位置为第1个表单的A1。如果写入成功返回值success为true,message为空;如果写入出错,success返回false,message为出错信息。[success, message]=xlswrite('file', array, 'sheet'):该函数向Excel文件的sheet表单写入数据。[success, message]=xlswrite('file', array, 'sheet','range'):该函数向Excel文件中sheet表单的range范围内写入数据。
在MATLAB中,还可以对Lotus 123表单文件进行处理。利用函数wk1read()读取Lotus 123表单文件,利用函数wk1finfo()获取表单文件的详细信息,利用函数wk1write()写入表单文件。需要注意的是,在函数名中是数字1,不是英文字符l。对于这些函数的详细使用情况,用户可以通过MATLAB的帮助系统进行查询。
本章详细的讲解了MATLAB中文件夹管理和文件I/O操作。文件I/O部分介绍了采用向导进行输入的导入、低级文件1/O和高级文件I/O操作。MATLAB中数据的导入和导出非常的灵活,功能非常丰富,需要用户灵活掌握,多加练习。最后,介绍了常用的图像、声音和视频文件的导入和导出。