深入浅出Matlab 7.x混合编程
- 格式:doc
- 大小:61.00 KB
- 文档页数:6
文本文件1.高级指令(1)Load功能:从文本文件或MAT文件中把数据导入MATLAB工作空间。
适合于读取一空格和分行符分割的简单文本数据文件,文件不包含文字说明。
两种调用方式:命令形式和函数形式。
不能导入复数调用方法:命令行方式调用:Load ***.datLoad ***.dat -ascii函数方式调用:[x]=load(‘***.dat’)[x]=load(‘-ascii’,‘***.dat’)%-ascii表示强制以文本方式处理文件。
(2)Importdata功能:适合从文本或特殊格式二进制文件(如.WA V)中读取数据。
不过它可以读取包含有文字说明的数据文件。
不能导入复数(3)Csvread功能:读取用逗号隔开的数据文件。
调用方法:X=csvread(‘filename’) %filename是文件名,它是一个字符串变量X=csvread(‘filename’,row,col) %读取行row,列col右下方数据X=csvread(‘filename’,row,col,range)%rang=[r1,c1,r2,c2]和上面类似可以读取复数数据。
(4)Dlmread功能:读取文件中的数据,文件不含说明文字,但可以读取以逗号和其他字符分割数据的文件。
调用方法:X=dlmread(‘filename’)%可以读取用户定义的分隔符,如x=dlmread(‘filename’,’;’)分隔符是单个字符X=dlmread(‘filename’,delimiter)X=dlmread(‘filename’,delimiter,row,col) %row=0,col=1表示第1行,第2列X=dlmread(‘filename’,delimiter,range)(5)Textread说明:它对文件的处理是通过调用一个名为dataread.dll的MEX文件实现的。
功能:能处理固定格式的文件,也能处理无格式文件。
调用方法:[A,B,C,….]=textread(‘filename’,’format’)%format字符串格式[A,B,C,….]=textread(‘filename’,’format’,N)%从文件开始的地方重复使用N次由format指定的格式读取数据,如果N小于0,textread将会读取整个文件。
[………….]=textread(….,’param’,’value’,….)Param和value一般成对出现,param是控制参数名字,value是参数设定值。
(6)Save说明:save是MATLAB的一个内置函数,用来把当前的MATLAB工作空间的一个或多个变量存入外部文件。
默认情况下以MAT格式。
调用方法:命令行方式调用:Save –ascii%将以文本方式把当前MATLAB工作空间的所有变量保存到名为matlab.mat 的文件中。
用load指令可读取该文件。
Save filename var1 var2 …,-ascii%容许选择保存工作空间里的变量,如save x.dat x -ascii%save x.dat x -ascii -double -tabs%-double强制数据保存16个有效数字,-tabs强制使用制表键Tab作为每行相邻数据的分隔符,默认使用空格。
函数方式调用:Save (‘filename’,’format’)%如save(‘x.dat’,’x’,’-ascii’,’double’,’-tabs’)Save (‘filename’,’var1’,’var2’,…,’format’)Save (‘filename’,’-struct’,’s’,’format’)%把结构型变量s保存到指定的文件中。
Save(‘filename’,’-struct’,’s’,’f1’,’f2’,…,’format’)%可以选择保存结构中想要单元Save(‘-regexp’,expr1,expr2,..,’format’)%save(‘x.dat’,’-regexp’,’^my’,)(7)Dlmwrite调用方法:Dlmwrite(‘filename’,M)%把矩阵M的数据保存到指定的文件中,每个数据之间默认用逗号隔开Dlmwrite(‘filename’,M,’D’)%用户指定数据间的分隔符%x=rand(2,3) dlmwrite(‘x.dat’,x,’\t’)使用Tab作为数据间的分隔符Dlmwrite(‘filename’,M,’D’,row,col)%保存数据中的一部分Dlmwrite(‘filename’,M,attribute1,value1,attribute2,value2,…)%attribute1和value1成对出现Dlmwrite(‘filename’,M’,’-append’)%指定文件存在时,从末尾开始续写Dlmwrite(‘filename’,M’,’-append’,attribute-value list),2.低级指令(1)fopen功能:默认情况下,以二进制格式打开文件调用方法:[fid,message]=fopen(filename,mode)%根据指定方式打开某个文件%fid是文件标识符,作为参数被传入其他对文件进行读写操作的命令%message包含与命令执行有关的信息[filename,mode,machineformat]=fopen(fid)%不但能够为读写操作打开文件,也能从被打开的标识符获得文件的信息和状态%mode表示当前文件被打开的模式%machineformat所用计算机平台对数据存储的字节顺序(2)fclose调用方法:Status=fclose(fid)%操作成功status为0,反之,status为-1Statud=fclose(‘all’)%关闭当前所有被打开的文件(3)fgetl功能:能够读取指定文件中的一行内容,但不包括新行分隔符调用方法:Tline=fgetl(fid)%fid为文件标识符,返回值包含文件中当前位置所对应的下一行内容%如果遇到文件结尾标志,tline为-1(4)fgets功能:与fgetl相似区别在于fgetl将包含该行的新行标志调用方法:Tline=fgets(fid)%读取指定文件中的下一行内容,并包含新行分隔符Tline=fgets(fid,nchar)%nchar表示返回值tline所能包含的最多字符个数(5)fscanf功能:读取指定格式文本文件调用方法:A=fscanf(fid,format)%format被循环使用直到文件结束,所读取的方式以列方式存入A中[A,count]=fscanf(fid,format,size)%size想要读取矩阵的大小(6)textcan功能:内置函数,与textread相似,但能够很好的处理大型文件,能够从文件的任何地方开始读取数据调用方法:C=textscan(fid,’format’)%返回值是一个胞元数组(Cell Array)C=textscan(fid,’format’,N)%容许用户设定是否读取全部文件,参数N表示每个数据转换规则被重复使用的次数,也就是返回的每个数据转换规则所对应的数据长度,N为-1读取全部内容C=textscan(fid,’format’,param,value,…)C=textscan(fid,’format’,N,param,value,…)注释:不仅能读取文本文件内容,也可以读取字符串中的数据,当读取对象是字符串时fid不再是文件标识符,而是一个普通的字符串(7)fprintf调用方法:Count=fprintf(fid,format,A,…)%只打印实数,数据为复数时只有实数部分被打印输出%代替disp函数在程序中向屏幕输出有格式的文本信息二进制文件1,二进制文件的打开调用方法:Fid=fopen(filename)%以二进制文件打开指定的文件(可以是相对路径,可以是绝对路径),fid 打开的文件标识符,利用它可以对打开的文件完成读写Fie=fopen(filename,mode)%以指定模式打开文件[fid,message]=fopen(filename,mode,machineformat)%以指定的模式和机器格式打开文件Fids=fopen(‘all’)%返回一个行向量,包括所有打开文件的文件标识符[filename,mode,machineformat]=fopen(fid)2,二进制文件的读写(1)fread调用方法:A=fread(fid)%由fid指定的文件中的内容全部读取并写入矩阵A中A=fread(fid,size)%容许用户指定读取数据的数目A=fread(fid,size,precision)%按照用户指定的格式读取数据,precision表示文件中的数据读取格式以及保存到返回参数A中的数据格式A=fread(fid,size,precision,skip)%容许用户指定在每次读取precision中指定大小的一块数据后,忽略若干个字节的数据,然后接着读取下一块数据。
A=fread(fid,size,precision,skip,machineformat)[A,count]=fread(…….)%A为读取的数据矩阵,count则为按照指定读取参数而实际读取的数据数目。
(2)fwrite功能:把数据以二进制方式写入文件调用方法:Count=fwrite(fid,A,precision)%将矩阵A中的数据以指定的格式写入文件,count表示实际写入文件的数据大小,precision表示数据写入格式。
Count=fwrite(fid,A,precision,skip)%容许用户指定在每次写完precision参数指定的数据后,在文件中跳过若干字节,然后接着写下一组数据。
3,文件读写位置控制(1)fseek功能:用来设定文件指针的位置调用方法:Status=fseek(fid,offset,origin)%offset为整型变量,表示相对于指定的位置需要的偏移字节数。
%origin可以是特殊的字符串,也可以是整数,表示文件中的参考位置。
%status表示返回值,若调用成功为0,否则为1(2)ftell功能:获得当前文件指针的位置调用方法:Position=ftell(fid)%position为返回值,表示当前文件指针的位置。
相对于文件开头的字符数来表示的。
(3)frewind功能:用来把文件指针重新复位到文件开头调用方法:Frewind(fid)(4)feof功能:判断是否到达文件末尾调用方法:Eofstat=feof(fid)%到达末尾时eofstat为1,否则为04,二进制文件的关闭条用方法:‘Status=fclose(fid)%status=fclose(‘all’),关闭所有被打开的文件。