matlab中各种数据的读取

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

本技术支持指南主要处理:ASCII,binary,andMATfiles.要得到MATLAB中可用来读写各种文件格式的完全函数列表,可以键入以下命令:helpiofunMATLAB中有两种文件I/O程序:highlevelandlowlevel.Highlevelroutines:包括现成的函数,可以用来读写特殊格式的数据,并且只需要少量的编程。Lowlevelroutines:可以更加灵活的完成相对特殊的任务,需要较多的额外编程。Highlevelroutines包括现成的函数,可以用来读写特殊格式的数据,并且只需要少量的编程。举个例子,如果你有一个包含数值和字母的文本文件(textfile)想导入MATLAB,你可以调用一些lowlevelroutines自己写一个函数,或者是简单的用TEXTREAD函数。使用highlevelroutines的关键是:文件必须是相似的(homogeneous),换句话说,文件必须有一致的格式。下面的段落描述一些highlevelfileI/Oroutines并给出一些例子帮助理解概念。LOAD/SAVE主要的highlevelfileI/Oroutines是LOAD和SAVE函数。LOAD可以读MAT-filedata或者用空格间隔的格式相似的ASCIIdata.SAVE可以将MATLAB变量写入MAT-file格式或者空格间隔的ASCIIdata。大多数情况下,语法相当简单。下面的例子用到数值由空格间隔的ASCIIfilesample_file.txt:154168543268684321907876598123Example:用LOADandSAVE读写数据CODE:%Loadthefiletothematrix,M:M=load('sample_file.txt')%Add5toM:M=M+5%SaveMtoa.matfilecalled'sample_file_plus5.mat':savesample_file_plus5M%SaveMtoanASCII.txtfilecalled'sample_file_plus5.txt':savesample_file_plus5.txtM-asciiUIGETFILE/UIPUTFILEUIGETFILE/UIPUTFILE是基于图形用户界面(GUI)的。会弹出对话框,列出当前目录的文件和目录,提示你选择一个文件。UIGETFILE让你选择一个文件来写(类似Windows‘另存为’选项?)。用UIGETFILE,可以选择已存在的文件改写,也可以输入新的文件名。两个函数的返回值是所选文件名和路径。Example:用UIGETFILE从当前目录选择一个M-fileCODE:%ThiscommandlistsalltheM-filesinthecurrentdirectoryand%returnsthenameandpathoftheselectedfile[fname,pname]=uigetfile('*.m','SampleDialogBox')注意:UIGETFILE一次只能选择一个文件。UIIMPORT/IMPORTDATAUIIMPORT是一个功能强大,易于使用的基于GUI的highlevelroutine,用于读complexdatafiles。文件也必须是homogeneous。IMPORTDATA形成UIIMPORT的功能,不打开GUI。可以将IMPORTDATA用于函数或者脚本中,因为在函数或者脚本中基于GUI的文件导入机制并不理想。下面的例子用到包含几行文件头和文本、数值数据的文件'sample_file2.txt':Thisisafileheader.Thisisfileisanexample.col1col2col3col4A14612.000B14613.000C14614.000D14615.000Example:UsingIMPORTDATAtoreadinafilewithheaders,text,andnumericdataCODE:%Thisreadsinthefile'sample_file2.txt'andcreatesa%structureDthatcontainsbothdataandtextdata.%NotetheIMPORTDATAcommandspecifiesawhitespace%asthedelimiterofthefile,butIMPORTDATAcanusually%detectthisonitsownD=importdata('sample_file2.txt','')%原文有误?D=importdata('sample_file2.txt')可以通过访问结构D的数据和文本域,来看结构D中的真实值,例如输入:data=D.datatext=D.textdata可以用UIIMPORT读同一个文件并得到同样的结构.注意:对于ASCIIdata,你必须检验导入向导正确的识别了列分隔符。TEXTREAD/STRREADTEXTREAD是一个强大的动态highlevelroutine,设计用来读ASCII格式的文本和/或数值数据文件。STRREAD除是从字符串而不是文件读以外,类似于TEXTREAD。两个函数可以用许多参数来改变其具体的工作方式,他们返回读入指定输出的数据。他们有效的提供给你一个“两全其美”的方法,因为他们可以用一个命令读入混合的ASCII和数值数据(highlevelroutines的做法),并且你可以改变他们以匹配你特定的应用(如同lowlevelroutines做到的)。例子:CODE:Example1:UsingTEXTREADtoreadinanentirefileintoacellarray%Thiscommandreadsinthefilefft.mintothecellarray,filefile=textread('fft.m','%s','delimiter','\n','whitespace','');CODE:Example2:UsingSTRREADtoreadthewordsinaline%ThiscommandusesthecellarraycreatedinExample1to%readineachwordofline28in'file'toacellarray,wordswords=strread(file{28},'%s','delimiter','')CODE:Example3:UsingTEXTREADtoreadintextandnumericdatafromafilewithheaders%Thiscommandskipsthe2headerlinesatthetopofthefile%andreadsineachcolumntothe4specifiedoutputs[c1c2c3c4]=textread('sample_file2.txt','%s%s%s%s','headerlines',2)CODE:Example4:UsingTEXTREADtoreadinspecificrowsoftextandnumericdatafromafile%ThiscommandreadsinrowsBandCofthefile.The'headerlines'%propertyisusedtomovedowntothedesiredstartingrowandthe%readoperationisperformed2times[c1c2c3c4]=textread('sample_file2.txt',...'%s%s%s%s',2,'headerlines',4)CODE:Example5:UsingTEXTREADtoreadinonlythenumericdatafromafilecontainingtextandnumbers%Thiscommandreadsinonlythenumericdatainthefile.The%'headerlines'propertyisusedtomovedowntothefirstrow%ofinterestandthefirstcolumnoftextisignoredwiththe%'*'operator[c2c3c4]=textread('sample_file2.txt','%*s%d%d%f','headerlines',3)DLMREAD/DLMWRITE/CSVREADDLMREAD和DLMWRITE函数能够读写分隔的ASCIIdata,而不是用lowlevelroutines。他们比lowlevelroutines容易使用,Lowlevelroutines用几行代码实现的功能可以用DLMREAD/DLMWRITE简化成一行。CSVREAD用来读分隔符是逗号的文件,是DLMREAD的特殊情况。当读空格和Tab分隔的电子数据表文件时,DLMREAD特别有用。以'sample_file.txt'为例:CODE:Example1:UsingDLMREADtoreadinafilewithheaders,text,andnumericdata%Thisreadsinthefile'sample_file2.txt'andcreatesamatrix,D,%withthenumericdatathiscommandspecifiesawhitespaceasthe%delimiterofthefileD=dlmread('sample_file.txt','')CODE:Example2:UsingDLMREADtoextractthefirst3columnsofthelast3rows%Thisreadsinthefirst3columnsofthelast3rowsof%thedatafile'sample_file.txt'intothematrix,D_partial.%读文件'sample_file.txt'前3列后3行,到矩阵D_partial.D_partial=dlmread('sample_file.txt','',[2042])CODE:Example3:UsingDLMWRITEtowriteacommadelimitedfile%Thiscreatesafilecalled'partialD.txt'thatconsistsof%thefirst3columnsofthelast3rowsofdatawhereeach%elementisseparatedbyacommadlmwrite('partialD.txt',D_partial,',')注意:保证DLMREADandDLMWRITE指定范围的指标从0开始,而不是从1开始。WK1READ/WK1WRITEWK1READ用来读Lotus123电子数据表文件的数据;WK1WRITE用来写矩阵到Lotus123电子数据表文件。XLSREADXLSREAD用来读Excel的数值和文本数据。三.具体例子分析:Matlab网站用两个例子非常详尽地介绍了各个命令的基本用法,实际中,面对手头上的数据,如何选用合适的命令呢?以下结合几个示例给出一些总结,大家举一反三就可以了:1.纯数据(列数相同):源文件:CODE:03866.1622198.938141.14013741.1392208.475141.25223866.2002198.936141.15633678.0482199.191141.23043685.4532213.726141.26153728.7692212.433141.27763738.7852214.381141.25673728.7592214.261141.22883748.8862214.299141.24393748.9352212.417141.253103733.

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功