资源描述:
《matlab 的数据文件读取》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Matlab的数据文件I/O的实现方法0 引 言Matlab是一个功能强大的计算机辅助设计软件,被称为“草稿纸式的科学计算语言”,它具有强大的符号、数值计算、矩阵运算以及图形显示的功能,它被广泛地应用在数字信号处理、自动控制、图像处理、神经网络、优化设计、模糊逻辑、仿真、小波分析等方面。Matlab应用中常需要实现Matlab与其他应用程序的数据共享,即需将数据文件读入Matlab进行有效的数据处理,然后将Matlab处理好的数据保存为数据文件,以便其他应用程序所使用。Matlab支持多种文件格式的输入和输出,如.dat、.txt、.mat、.bmp等。在实际进行数据文件的I/
2、O时常出现错误,本文详细讨论Matlab中数据文件I/O的实现方法,并给出每种方法的具体实例。所有的数据文件I/O操作文件都在Matlab中,无需安装专门的工具箱。数据文件I/O程序可分为两种基本类型:低级和高级。高级包括一些专门的函数以支持特定格式的读和写,相对而言低级则比较灵活。1 高级数据文件I/O方式命令 高级数据文件I/O命令主要有Load和Save。Save可以将Matlab变量以ASCII码格式或MAT存储,Load可以读ASCII码格式的变量或MAT文件到Mat2lab工作区。这两条命令的使用比较简单,(为便于读者可直接将以下文本输入计算机运行,注释采用英文)
3、如:%ThisfiledemonstratesthebehaviorofLOADandSAVEclearall%Clearallvariablesx=5;x2=10;%Createxandx2whos%To,displaythevariablesinworkspacepause%Pausesoastoobservesavexdatax%Saveonlyxintoxdata.matclearall%Clearallvariablesloadxdata%Loadxdata.matwhos%Notethatxisbackpausex2=10;%Recreatex2whospauses
4、avexdataxx2%Nowsaveusingawildcardclearall%Clearallvariablesloadxdata%Loadxdata.matwhos使用Load和Save还可以实现一次读多个文件或将数据存入多个文件,以Save命令为例(Load类似),程序如下:a=rand(6);%makea(636)randomnumberfilename=['a1.txt';'a2.txt';'a3.txt';'a4.txt';'a5.txt';'a6.txt';];%listyourfilenamesfori=i:1ength(a)temp=a(:,i);save
5、(filename(i,:),'temp''-ascii');%savetothespecifiedfileenddlmread和teatread函数可以实现读入格式化的ASCII码数据而不使用低级命令。这些函数比低级命令易于使用,作为低级命令需要多条语句来实现,而这两个命令可以简化为一条语句。如果你的数据文件是数字的但中间以定界符分隔(或你想写这样的文件)dlmread可以把数据读入一个矩阵而忽略定界符,DLMWRITE则允许你写这样格式的文件。当你想读入Excel文件,数据可能以空格或Tab定界,DLMREAD特别有用,例如你将以Tab界定的Excel文件保存为mydata
6、.txt,可以将其读入矩阵,语句为:M=dlmread('mydata.txt','t');%tindicatesatabTEATREAD函数允许你读入ASCII码和数值混合的数据文件,详细说明可查在线帮助helpteatread,假设‘mydata.dat’文件包含以下内容:NameTypeScoreYY/NSallyType112.3445YesJoeType223.5460NoBillTypel34.9012No你想将每一列分别读入单独的变量,使用命令:[names,type,score,y,answer]=teatread('mydata.dat','%s%s%f%
7、d%s','headerlines',1);2 使用低级命令读ASCII码格式文件Matlab的低级I/O命令跟C语言很类似,以下几个常用的命令可用于读入ASCII文件:FOPEN—打开文件;FSCANF—从文件读格式化数据;FPRINTF—写格式化数据到文件;FGETL—从文件读入一行;FTELL—返回当前文件位置;FSEEK—设置文件指针位置;FCLOSE—关闭文件指针。值得注意的是必须先使用fopen打开文件,返回一指针指向文件开头,当使用fscanf和fprint时指针会跟随移动。必