搜档网
当前位置:搜档网 › matlab的各种数据读取(txtdatmat等格式)文件打开关闭

matlab的各种数据读取(txtdatmat等格式)文件打开关闭

matlab的各种数据读取(txtdatmat等格式)文件打开关闭
matlab的各种数据读取(txtdatmat等格式)文件打开关闭

matlab的各种数据读取(txt,dat,mat等格式),文件打开

关闭

MATLAB提供了多种方式从磁盘读入文件或将数据输入到工作空间,即读取数据,又叫导入数据;将工作空间的变量存储到磁盘文件中称为存写数据,又叫导出数据。至于选择哪种机制,则根据下面两个因素决定:●用户所执行的操作是导入数据还是导出数据;●数据的格式为文本格式、二进制格式还是如HDF之类的标准格式。将数据导入MATLAB中最容易的方法就是使用导入数据模板(Import Wizard),使用该模板时不需要知道数据的格式,只需指定包含这些数据的文件,然后导入模板会自动处理文件内容。本章重点内容如下:●文件的打开和关闭●文本文件的读取●存写ASCII数据●二进制数据的读取●二进制数据的存写●使用I/O文件函数进行数据读写●MAT 文件的读写

2.1 文件的打开和关闭2.1.1 文件的打开无论是要读写ASCII码文件还是二进制文件,都必须先用fopen函数将其打开,在默认情况下,fopen以二进制格式打开文件,它的使用语法如下:fopen ('filename', 'mode')其中filename表示要读写的文件名称,mode则表示要对文件进行的处理方式,可以是表2-1中的任一字符串。表2-1 文本文件打开的

模式mode意义rt以只读方式(Reading)打开文件wt以只写方式(Writing)打开文件at以追加方式(Appending)打开文件,新内容将从原文件后面续写r+t以同时读写方式打开文件w+t以同时读写创建文件,原文件内容被清除a+t以同时读和追加(Reading and Appdending)方式,原文件内容被保留,新内容将从原文件的后面开始At以读写方式打开或创建文件,适用于对磁带介质文件的操作Wt以写入方式打开或创建文件,原文件内容被清除,适用于磁带介质文件的操作fopen函数有两个返回值,一个是返回一个文件标志(file Identifier),它会作为参数被传入其他对文件进行读写操作的命令,通常是一个非负的整数,可用此标识来对此文件进行各种处理。如果返回的文件标识是–1,则代表fopen无法打开文件,其原因可能是文件不存在,或是用户无法打开此文件权限。另一个返回值就是message,用于返回无法打开文件的原因。为了安全起见,最好在每次使用fopen函数时,都测试其返回值是否为有效值。下面以脚本m文件为例来声明文件的打开。例

2-1 %exam1.m[f,message]=fopen('fileexam1', 'r')if f==-1disp (message); %显示错误信息end若文件fileexam1不存在,则显示如下信息。Cannot open

file.existence?permissions?memory?...

例2-2 %exam2.m[f,message]=fopen('fileexam2', 'r');if

f==-1disp (message); %显示错误信息else

disp(f);end若文件fileexam2存在,则返回f值。2.1.2 文件的关闭一旦完成文件的读写,最好关闭文件,以便对其进行其他操作。这时就可以使用fclose函数来关闭文件,其适用语法如下。fclose(f)其中f为打开文件的标志,若fclose函数返回值为0,则表示成功关闭f标志的文件;若返回值为–1,则表示无法成功关闭该文件。一般来说,在完成对文件的读写操作后就应关闭它,以免造成系统资源浪费。此外,需注意的是,打开和关闭文件都比较耗时,因此为了提高程序执行效率,最好不要在循环体内使用文件。若要一次关闭打开的所有文件,可以使用下面的命令:fclose all2.2 文本数据虽然MATLAB自带的MAT文件为二进制文件,但为了便于和外部程序进行交换以及方便查看文件中的数据,也常常采用文本数据格式与外界进行数据交换。在文本格式中,数据采用ASCII码格式,可以表示字母和数字字符。ASCII文本数据可以在文本编辑器中查看和编辑。MATLAB提供多种函数能够进行文件读写,这些函数都是MATLAB的一部分,不需要额外的工具箱支持。2.2.1 从文本文件中读取数据1.使用导入模板来读取数据使用导入模板来读取数据,需按以下步骤进行:(1) 选择File→Import Data选项,然后弹出一个文件选择对话框;也可以使用uiimport函数来打开导入数据模板。(2) 在文件选择对话框中选择想导入数据的文

本文件,然后单击Open按钮,导入数据模板就会打开该文件并准备处理其内容。(3) 指定用于分开单个数据的字符,该字符称为分隔符或列分隔符。在多数情况下可以用导入模板来设定分隔符。(4) 选择要导入的变量。在默认情况下,导入模板将所有的数值数据放在一个变量中,而将文本数据放在其他变量中。(5) 单击Finish按钮完成数据的导入。当使用导入模板来打开一个文本文件时,在导入模板对话框的预览区仅显示原始数据的一部分,通过它,用户可以验证该文件中的数据是否为所期望的。导入模板也根据文件中的数据分隔符来对导入的数据进行预处理。在导入模板中打开工作区中的grade.txt文件。english math physicjoe

80 90 60susan 78 98 88rob

67 90 89

图2-1 将数据通过模板导入在图2-1中,导入模板已辨认space字符,把它作为文件中数据的分隔符,并建立了两个变量:data(包含文件中所有数值数据)和textdata(包含文件中所有文本数据)。当导入模板正确导入文件中的数据后,就会显示它所建立的变量。要选择一个变量来导入数据,可单击它名称后面的复选框。在默认情况下,所有变量都会被选中。在导入对话框的右面显示了导入模板建立的变量内容。要查看其他变量,只需要单击该名称。在选择好要导入的变量后,单击Next按钮,如图2-2所示。

图2-2 使用模板查看各变量数据在默认情况下,导入模板将文件中所有的数值数据放在一个变量中;若文件包含文本数据,则模板将它们放在另外一个变量中;若文件包含行或列,模板也将它们作为各自独立的变量分别称为行头和列头。当所有导入模板创建好数据后,使用whos命令可以查看工作空间的变量。>> whos

Name Size Bytes Class Attributes

data 3x3 72 double textdata 4x1 314 cell

2. 使用函数来读取文本数据若要在命令行或在一个M 文

件中读取数据,必须使用MATLAB 数据函数,函数的选择则是依据文本文件中数据的格式。而且文本数据格式在行和列上必须采取一致的模式,并使用文本字符来分隔各个数据项,称该字符为分隔符或列分隔符。分隔符可以是space、comma、semicolon、ab或其他字符,单个的数据可以是字母、数值字符或它们的混合形式。文本文件也可以包含称之为头行的一行或多行文本,或可以使用文本头来标志各列或各行。在了解要输入数据的格式之后,便可以使用MATLAB 函数来读取数据了。若对MATLAB 函数不熟悉,可从表2-2中了解几个读取函数的一些使用特征。表2-2 读取函数的比较函数数据类型分隔符返回值csvread数

值数据仅cooma1dlmread数值数据任何字符1fscanf字母和数值任何字符1load数值数据仅space1textread字母和数值任何字符多返回值

3. 读取数值文本数据若用户的数据文件只包含数值数据,则可以使用许多MATLAB函数,这取决于这些数据采用的分隔符。若数据为矩形形状,也就是说,每行有同样数目的元素,这时可以使用最简单的命令load(load也能用于导入MAT 文件,该文件为用于存储工作空间变量的二进制文件,如果文件名后缀是.dat,则MATLAB会以MAT文件格式进行读取)。例如,文件my_data.txt包含了两行数据,各数据之间由space字符隔开。当使用load时,它将读取数据并在工作空间中建立一个与该文件同名的变量,但不包括扩展名。>>load my_data.txt;调用whos命令查看工作空间的变量。>> whos

Name Size Bytes

Class Attributes

data 3x3 72

double my_data 3x4

96 double textdata

4x1 314 cell 此时可以查看与该文件同名的变量的值>> my_data

my_data =

0.3242 0.4324 0.3455 0.6754 0.4566

0.9368 0.9892 0.9274 0.4658 0.2832

0.9373 0.8233若想将工作空间的变量以该文件名命名,则可以使用函数形式的load,下面的语句将文件导入工作空间并赋给变量AA=load('my_data.txt');4. 读取有分隔符的ASCII数据文件如果数据文件不使用空格符而是使用逗号或是其他符号作为分隔符,用户可以选择多个可用的导入数据函数。最简单的便是使用函数dlmread。举个例子来说,一个名为lcode.dat的数据文件,数据内容由逗号分隔。

0.3445,0.8433,0.78650.7562,0.4233,0要把该文件的全部内容读入阵列A,只须输入如下命令:>>

A=dlmread('lcode.dat',',')即可以把数据文件中使用的分隔符作为函数dlmread的第二个参数。注意:即使每行的最后一个数据后面不是逗号,dlmread函数仍能正确读取数据,因为dlmread忽略了数据之间的空格符。因此,即使数据为如下格式,前面的dlmread命令仍能正常工作。A =

0.3445 0.8433 0.7865 0.7562 0.4233

0另外需要注意的是,分隔符只能选取单个字符,不能用字符串来作为分隔符。5. 使用文本头读取数值数据要读取一个包含文本头的ASCII码数据文件,可以使用textread函数,并指定头行参数。调用函数textread 同样非常简单,同时对文件读取的格式处理能力更强,函数接收一组预先定义好的

参数,由这些参数来控制变量的不同方面。Textread既能处理有固定格式的文件,也可以处理无格式的文件,还可以对文件中每行数据按列逐个读取。textread函数常见的调用方法有如下几种:[A,B,C...]=textread('filename',

'format')[A,B,C...]=textread('filename', 'format',N)例如文件

my_data.txt包含了如下文件内容,有一行文本头,且格式化的数值数据。num1 num2 num3 num40.3242

0.4324 0.3455 0.67540.4566 0.9368 0.9892

0.92740.4658 0.2832 0.9373 0.8233因为有文件头,要使用如下textread命令来读取文件中的数据。>> [num1 num2 num3

num4]=textread('my_data.txt','%f %f %f %f','headerlines',1)执行结果如下:num1 =

0.3242 0.4566 0.4658num2 =

0.4324 0.9368 0.2832num3 =

0.3455 0.9892 0.9373num4 =

0.6754 0.9274 0.82336. 读取字母数值混合的数据若数据文件中包含了字母和数值混合的ASCII码数据,也可以使用函数textread来读取数据。由上一小节知道,函数textread可以返回多个输出变量,实际上用户还可以通过参数指定每个变量的数据类型。例如要把文件my_exam.dat的全部内容读入工作空间,需要在textread行数的输入参数中

指定数据文件的名称和格式。文件my_exam.dat包含的混合的字母和数值如下:Joe gradeA 4.9 passsusan gradeD 2.0 fail如果想把4列数据全部读取出放在4个变量中,则使用如下命令:>> [name gra grades

answer]=textread('my_exam.dat','%s %s %f %s')在这里要注意命令中格式字符串的定义,对于格式字符串中定义的每种变换,必须指定一个单独的输出变量,textread 函数按格式字符串中指定的格式处理文件中的某个数据项,并把值放在输出变量中。输出变量的数目必须和格式字符串中指定的变换数目项匹配,在该例中,函数按格式字符串来读取文件

my_exam.dat的每一行,直到文件读完,该命令的执行结果是:name =

'Joe' 'susan'gra =

'gradeA' 'gradeD'

grades =

4.9000 2.0000answer =

'pass' 'fail另外,textread函数可以有选择地读取数据,比如我们不需要取出中间几列数据,只取出第一列和最后一列数据,则可以使用命令:>> [name

answer]=textread('my_exam.dat','%s %*s %*f %s')

name =

'Joe' 'susan'

answer=

'pass' 'fail'若文件采用的分隔符不是空格,则必须使用函数textread ,将该分隔符作为它的参数。例如,若文件my_exam.dat 使用分号作为分隔符,则读入该文件需使用如下命令:[name gra grades

ans]=textread('my_exam.dat','%s %s %f %s', 'delimiter', '; ')2.2.2 存写ASCII码数据本小节介绍如何使用MATLAB函数按几种通用的ASCII码格式来存写数据,即如何使用这些函数来把一个MATLAB数值矩阵写入到一个文本文件中,其中该矩阵的列和行使用空格符来分隔。用户采用什么函数取决于所要存写数据的数据量和数据格式。常用的两种ASCII码数据格式如下:●采用空格符分隔;●采用分号分隔。MATLAB的存写数据函数如表2-3所示。表2-3 数据存写函数函数名称适用数据分隔符csvwrite数值数据逗号diary数值数据或单元阵列空格dlmwrite数值数据任何字符fprintf字母和数值数据任何字符save数值数据制表符或空格符

1. 存写有分隔符的ASCII码数据文件若要将当前的MATLAB工作空间的一个或多个变量写到一个有分隔符的ASCII码文件中,可以使用save命令或dlmwrite函数。在默认情况下,save命令是以MAT 格式存写数据的,这部分内容我们在后面详细介绍,本小节主要介绍save命令通过

ASCII码限定符以文本方式存写数据。而dlmwrite函数则可以提供更大的灵活性,它允许用户把任何字符指定为分隔符,也可以通过指定一个值域存写一个阵列的子阵列。

>> clear all;>> x=rand(2,3);>> save

my_test1.dat x -ascii;该命令将变量x中的数据存写到

my_test1.dat文件中。通过文本编辑器,我们可以查看该文件的内容:9.2181297e-001 1.7626614e-001

9.3546970e-001 7.3820725e-001 4.0570621e-001

9.1690444e-001我们也可以将命令中的文件名和变量名省略,那样的话,命令的执行结果则是把当前MATLAB工作空间中的所有变量保存到matlab.mat文件中。需要指明的是这时的文件虽然后缀名为.mat,但文件内容仍然是以文本方式保存的。在默认情况下,save命令使用空格作为分隔符,但用户可以通过指定-tabs限定符来使用制表符而不是空格

符作为分隔符。当使用save命令把一个字符阵列写入ASCII 文件时,将ASCII码写入文件也就等于把字符写入文件。若要以ASCII码形式存写一个阵列,并指定文件使用的分隔符,需要使用dlmwrite函数,比如重新指定分号作为分隔符,把变量x存到文件my_test2.dat 文件中,查看其结果:

0.92181;0.17627;0.935470.73821;0.40571;0.9169在默认情况下,dlmwrite函数用逗号或空格作为分隔符,或者是指定空的引号,即无分隔符。2. 使用diary命令来存写数据较小的

数值阵列或单元阵列的存写可以使用diary命令,例如,在工作空间中有一个阵列A: A=[1 2 3 4 5; 6 7 8 9 10]在命令提示符下执行如下命令:diary my_test3.dat,就可以创建

my_test3.dat文件。接下来显示要存写的阵列A:A = 1 2 3 4 5 6 7 8 9 10然后执行关闭diary命令:diary off。这时,在文本编辑器中打开my_test3.dat文件,会发现diary命令创建的文件记录了在MATLAB会话期间的所有命令。可以通过编辑,删去无关的文本。2.3 二进制数据2.3.1 二进制数据的读取本小节将介绍怎样将一般格式下的二进制数据文件读取到工作空间中。读取二进制数据常用的方法有两种,一是使用导入模板来导入,二是使用二进制数据导入函数来读取。1. 使用导入模板读取二进制数据要使用导入模板来读取二进制数据,需按以下步骤进行:(1) 选择File→Import Data选项,弹出一个文件选择对话框;也可以使用uiimport函数来打开导入数据模板。(2) 在文件选择对话框中选择想导入数据的二进制数据文件,然后单击Open按钮,导入数据模板就会打开该文件并准备处理其内容。(3) 选择要导入的变量。在默认情况下,导入模板将要建立的变量取决于文件中的数据类型。

(4) 单击Finish按钮完成数据的导入。这个过程和使用导入模板读取文本文件是基本一致的,这里就不再举例了。2. 使用导入函数读取二进制数据若要从命令行或一个M 文件中

读取二进制数据,就必须使用MATLAB 导入函数,函数的选择取决于文件中数据的格式,这些函数如表2-4所示。表2-4 导入二进制数据函数函数名称读取文件的扩展名数据格式load.mat读取MATLAB下的MAT数据格式的数据aviread.avi读取AVI格式的音频视频数据cdfread.cdf读取CDF格式的数据hdf.hdf读取HDF格式的数据

imread.bmp .cur .gif .hdf .ico.jpg .pbm .pgm .png .pnm .ppm .pcx .tif .xwd .ras读取各种格式的图形数据wavread.wav读取Windows 系统的声音文件xlsread.xls 读取Excel 电子表格数据2.3.2 二进制数据的存写要以一种标准二进制格式来存写二进制数据,可以使用MATLAB 提供的高端函数,函数的选择取决于要存写数据的类型,这些函数如表2-5所示。表2-5 导出二进制数据函数函数名称读取文件的扩展名数据格式save.mat存写MATLAB下的MAT数据格式的数据avifile.avi存写A VI格式的音频视频数据cdfwrite.cdf存写CDF格式的数据hdf.hdf存写HDF格式的数据

imwrite.bmp .cur .gif .hdf .ico.jpg .pbm .pgm .png .pnm .ppm .pcx .tif .xwd .ras存写各种格式的图形数据wavwrite.wav存写Windows 系统的声音文件xlswrite.xls 存写Excel 电子表格数据

在MATLAB中可以将一系列的图像保存为电影,这样使用

电影播放函数就可以进行回放,保存方法可以同保存其他MATLAB工作空间变量一样,通过采用MAT文件格式保存。但是若要浏览该电影,必须在MATLAB环境下。在以某种格式存写一系列的MATLAB图像时,不需要在MATLBA 环境下进行预览,通常采用的格式为A VI格式。A VI是一种文件格式,在PC 机上的Windows系统或UNIX操作系统下可以进行动画或视频的播放。若要以A VI格式来存写MATLAB 图像,步骤如下:(1) 用avifile函数建立一个A VI文件。(2) 用addframe函数来捕捉图像并保存到A VI 文件中。(3) 使用close函数关闭AVI文件。注意:若要将一个已经存在的MATLAB电影文件转换为A VI文件,需使用函数movie2avi。函数原型为:

movie2avi(mov,filename)movie2avi(mov,filename,param,value, param,value...)2.4 使用文件I/O函数前面介绍的都是MATLAB中的一些高级函数,除此之外MATLAB还包含了一组低端的文件I/O函数,如前面介绍的所有文件的打开和关闭函数:fopen函数和fclose函数。这些函数是建立在ANSI 标准C库中的I/O函数。若用户对C语言熟悉的话,那么也肯定熟悉这些函数。比如,MATLAB 文件I/O函数使用和C 语言同样的编程模式等。要读写这些数据,需进行以下几步:(1) 使用fopen函数打开文件。fopen函数将会返回一个文件标志,通过它,就可以使用其他所有的低端文件I/O函数。

(2) 对文件进行操作,如:读写二进制数据、格式化读写文本数据等。(3) 使用fclose函数来关闭文件。2.4.1 二进制数据的读取使用fread函数可从文件中读取二进制数据,它将每个字节看成整数,并将结果以矩阵形式返回。对于读取二进制文件,fread必须制定正确的数据精度。fread的基本调用方法是:A=fread(fid)其中fid是一个整数型变量,是通过调用fopen函数获得的,表示要读取的文件标识符,输出变量A为矩阵,用于保存从文件中读取的数据。例如文件test.txt的内容如下:test it用fread函数读取该文件,输入如下命令:>> f=fopen('test.txt','r');>>

answer=fread(f)

answer =

116 101 115 116 32 105 116输出变量的内容是文件数据的ASCII码值,若要验证读入的数据是否正确,通过下面的命令可以验证。>>

disp(char(ans1'))test itfread函数的第二个输入参数可以控制返回矩阵的大小,例如:>> f=fopen('test.txt','r');>> answer=fread(f,2)

answer =

116 101也可以把返回矩阵定义为指定的矩阵格式,例如>> f=fopen('test.txt','r');>> an=fread(f,[2 3]) answer =

116 115 32 101 116 105使用fread函数的第三个输入变量,可以控制fread将二进制数据转成MATLAB 矩阵用的精度,包括一次读取的位数(Number of Bits)和这些位数所代表的数据类型。常用的精确度类型有下列几种,如表2-6所示。表2-6 常见的精确度类型数据类型说明char带符号的字符(通常是8h16) uchar无符号的字符(通常是8bits)short短整数(通常是16bits)long长整数(通常是16bits)float单精度浮点数(通常是32bits)double双精度浮点数(通常是64bis)

2.4.2 二进制数据的写入使用fwrite函数可将矩阵按所指定的二进制格式写入文件,并返回成功写入文件的大小。函数的调用方式如下:count=fwrite(fid,A,precision)其中,count 用来返回写入文件数据的大小,f参数同样是通过fopen函数获得的整数型变量,表示文件标识符,A表示要写入的数据矩阵,第三个参数precision同二进制读取函数的参数一样,表示数据的写入格式。在下例中fwrite产生一个大小为100字节的二进制文件,它包含了一个5×5阶魔方矩阵,共25个元素,每个元素占用4个字节。f=fopen('magic5.bin',

'w');fwrite(f,magic(5), 'int32');fclose(f)二进制文件在不同的计算机架构上可能存储方式不同,所以二进制文件存在兼容性问题,而文本文件则不存在这种兼容性问题。不同的存储方式导致在不同架构上保存的二进制文件在另外的平台上无

法读取,这主要是因为多字节数据类型在计算机硬件上的存储顺序不同。在MATLAB中,无论计算机上的数据存储顺序是哪一种,都可以读写二进制文件,但要正确地调用fopen 函数打开文件。2.4.3 格式化读取ASCII码数据fscanf函数与C语言中的fscanf在结构、含义和使用上都很相似,即能够从一个有格式的文件中读入数据,并将它赋给一个或多个变量。两个函数都采用同一组格式指定符来控制输入数据的格式,fscanf的格式指定符由字符%开头,常用格式如表2-7所示。表2-7 常见的用于输入的格式转换符格式转换符意义%c读取字符型变量,也可以指定多个字符,'%3c'%s读取字符串变量%d读取整数型变量%f读取浮点数%g读取双精度浮点数

例如,我们仍然读取my_test.dat文件中的数据,其数据内容是: 4.5646767e-001 8.2140716e-001 6.1543235e-001 1.8503643e-002 4.4470336e-001 7.9193704e-001通过下面这段代码,将该文件中的数据读取到列向量T中。>> f=fopen('my_test.dat','r');>> T=fscanf(f,'%g');>> fclose(f)也可以通过以下代码段把文件数据读取到一个3×2矩阵A中。>> f=fopen('my_test.dat','r');>>

A=fscanf(f,'%g',[3 2]);>> fclose(f)执行后结果如下,这时候A矩阵恰好是文件中数据矩阵的转置。>> A

A =

0.4565 0.0185 0.8214 0.4447 0.6154

0.79192.4.4 格式化写入文本数据fprintf将会把数据转换为字符串,并将它们输出到屏幕或文件中。一个格式控制字符串包含转换指定符和可选的文本字符,通过它们来指定输出格式。转换指定符用于控制阵列元素的输出。当fprint函数做标准输出,也就是运行结果显示在屏幕上的时候,它的功能和disp函数相类似,区别仅在于fprint可以输出特定格式的文本数据。比如,创建一个2×2的魔方矩阵,然后打开一文件,写入数据。>> clear all;>>

x=magic(2);>> fid=fopen('exam4.txt','w');>> fprintf(fid,'%4.2f %8.4f\n',x);>> fclose(fid);执行这段程序段之后,我们可以检验一下执行结果:>> x

x =

1 3 4 2

>> type exam4.txt

1.00 4.00003.00

2.0000可以看出,fprintf函数在打印显示矩阵数据时,数据转换规则是可以按列方式循环作用于矩阵的各个元素的,这个例子中显示出来的结果就好像原矩阵的转置,而且分别按数据转换规则显示。2.4.5 控制文件位置指针每一次打开文件时,MATLAB就会保持一个文件位置指针(File Position Indicator),由它决定下一次进行数据读取或写入的位置。控制此指针的函数如表2-8所示。表2-8

控制位置指针的函数函数名称功能说明fseek设定指针位置ftell获得指针位置frewind重设指针到文件起始位置feof测试指针是否在文件结束位置

fseek 函数用于指定文件指针的位置,调用方式如下:status=fseek(fid,offset,origin)fid是指定的文件标识符。offset 为整数型变量,表示相对于指定位置需要的偏移字节数,正数表示向文件末尾偏移,负数表示向文件开头偏移。Origin 可以是特定字符串,也可以是整数,表示文件中的参考位置。参考位置的参数说明如表2-9所示。表2-9 参考位置参数的说明参考位置(origin)说明'bof '或者-1文件开头'cof '或者0文件中当前位置'eof '或者1文件末尾

ftell 函数用来获得当前文件指针的位置,调用方式如下:position=ftell(fid)fid是指定的文件标识符。Position为返回值,表示当前指针的位置。position是以相对于文件开头的字节数来表示的。如果返回值为–1,表示未能成功调用。这是可以通过调用feeeor(fid)的具体的错误信息。frewind 函数用来把文件指针重新复位到文件开头。调用方式如下:frewind(fid)其中fid为指定的文件标识符,其作用和

fseek(fid,0,-1)是等效的。feof 函数用来判断是否到达文件末尾。调用方式如下:eofstat=feof(fid)其中fid为指定的文件标识符。eofstat是返回值,当到达文件末尾时,eofstat为1;否则为0。比如我们仍然对文件my_test.dat执行以下命令,

然后测试文件指针位置>>

f=fopen('my_test.dat','r');>> A=fscanf(f,'%g',[3 2])

A =

0.4565 0.0185 0.8214 0.4447 0.6154

0.7919>>feof(f)

ans=

0在本例中,文件指针指向最后一个数据,而不是文件末尾,因此返回值是0,而不是1,但是若执行以下命令:>> f=fopen('my_test.dat','r');>> A=fscanf(f,'%g',[4

2])

A =

0.4565 0.4447 0.8214 0.7919 0.6154

0 0.0185 0>>feof(f)

ans=

1在my_data.dat文件中只包含6个数字,因此feof函数返回值为1。若要重新设置指针到起始位置,就可以直接使用frewind函数。2.5 MAT 文件MAT文件是MATLAB 使用的一种特有的二进制数据文件。MAT文件可以包含一个或者多个MATLAB 变量。MATLAB通常采用MAT文件把工作空间的变量存储在磁盘里,在MAT文件中不仅保存各变量数据本身,而且同时保存变量名以及数据类型等。所以在MATLAB中载入某个MAT文件后,可以在当前MATLAB

Matlab文件读取和写函数总结

Matlab读取文件函数总结 1.load读取方式 a.基本说明: 只能读取数值数据,不能读取含文本的数据;日期按数值读取。 b.调用方式: a=load(filename); c.有无分隔符限制: 无需输入分隔符,可自动识别空格、逗号、分号、制表符。 d.能否自定义读取范围: 不能。 e.适用文件类型: txt、csv。 2.importdata读取方式 a.基本说明: 可读取数值数据和含文本的数据,但是要求文本在数据的第一行或第一列。返回值分为数值部分(data)和文本部分(textdata) b.调用方式: a=importdata(filename,delm,nheaderlines); filename:文件名(如果文件在其他路径下,文件名前需加所在路径。) delm:分隔符 nheaderlines:从第nheaderlines+1行开始读取数值数据。 c.有无分隔符限制: 多列数据时需输入分隔符。若不输入分隔符,整行会被作为字符串放入一列。 d.能否自定义读取范围: 可从某一行开始读取数值数据。若使用importdata按钮,则可自定义读取范围和设置数据类型。 f.适用文件类型 txt、xls、xlsx、csv。 3.textscan读取方式 a.基本说明: 可对列按照自定义格式读取数据,必须输入每列的读取格式,可跳过某个列或几列。 按数值读取时,缺少值以NaN填补;按字符读取时,缺少值以空格填补。返回值按列放入元胞数组。 b.调用方式: c = textscan(fid,'format',n,'param',value) fid:文件指针。使用textscan函数时需先使用fopen函数打开数据文件,返回给fid 文件若不再使用,则需用fclose(fid)关闭文件。 ‘format’:定义每列的读取格式。例如%s表示按字符串读取、%d表示按整数读取、%D 按日期读取、%*表示跳过该列。level%u8表示将level1读取成1,去掉level。 ‘param’,value:这两个参数成对出现。例如’Delimiter’,’s’表示按分隔符为’,’进行读取。 c.有无分隔符限制 可自定义分隔符,不是必须的。 d.能否自定义读取范围:

Matlab文件操作及读txt文件(fopen,fseek,fread,fclose)

Matlab文件操作及读txt文件(fopen,fseek,fread,fclose) matlab文件操作 文件操作是一种重要的输入输出方式,即从数据文件读取数据或将结果写入数据文件。MATLAB提供了一系列低层输入输出函数,专门用于文件操作。 1、文件的打开与关闭 1)打开文件 在读写文件之前,必须先用fopen函数打开或创建文件,并指定对该文件进行的操作方式。fopen函数的调用格式为: fid=fopen(文件名,…打开方式?) 说明:其中fid用于存储文件句柄值,如果返回的句柄值大于0,则说明文件打开成功。文件名用字符串形式,表示待打开的数据文件。常见的打开方式如下: λ…r?:只读方式打开文件(默认的方式),该文件必须已存在。 …r+?:读写方式打开文件,打开后先读后写。该文件必须已存在。λλ…w?:打开后写入数据。该文件已存在则更新;不存在则创建。 …w+?:读写方式打开文件。先读后写。该文件已存在则更新;不存在则创建。λ λ…a?:在打开的文件末端添加数据。文件不存在则创建。

…a+?:打开文件后,先读入数据再添加数据。文件不存在则创建。 另外,在这些字符串后添加一个“t”,如…rt?或…wt+?,则将该文件以文本方式打开;如果添加的是“b”,则以二进制格式打开,这也是fopen 函数默认的打开方式。 2)关闭文件 文件在进行完读、写等操作后,应及时关闭,以免数据丢失。关闭文件用fclose函数,调用格式为: sta=fclose(fid) 说明:该函数关闭fid所表示的文件。sta表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回-1。如果要关闭所有已打开的文件用fclose(…all?)。 2、二进制文件的读写操作 1)写二进制文件 fwrite函数按照指定的数据精度将矩阵中的元素写入到文件中。其调用格式为: COUNT=fwrite(fid,A,precision) 说明:其中COUNT返回所写的数据元素个数(可缺省),fid为文件句柄,A用来存放写入文件的数据,precision代表数据精度,常用的数据

Matlab的各种数据读取、文件读写等操作汇总

Matlab 的各种数据读取、文件读写等操作汇总 MATLAB 提供了多种方式从磁盘读入文件或将数据输入到工作空间,即读取数据,又叫导入数据;将工作空间的变量存储到磁盘文件中称为存写数据,又叫导出数据。至于选择哪种机制,则根据下面两个因素决定:?用户所执行的 操作是导入数据还是导出数据;?数据的格式为文本格式、 二进制格式还是如HDF 之类的标准格式。将数据导入MATLAB 中最容易的方法就是使用导入数据模板(Import Wizard) ,使用该模板时不需要知道数据的格式,只需指定包含这些数据的文件,然后导入模板会自动处理文件内容。本章重点内容如下:? 文件的打开和关闭? 文本文件的读取?存写ASCII数据?二进制数据的读取? 二进制数据的存写? 使用I/O文件函数进行数据读写?MAT 文件的读写 2.1 文件的打开和关闭2.1.1 文件的打开无论是要读写ASCII 码文件还是二进制文件,都必须先用fopen 函数将其打开,在默认情况下,fopen 以二进制格式打开文件,它的使用语法如下:fopen ('filename', 'mode') 其中filename 表示要读写的文件名称,mode 则表示要对文件进行的处理方式,如下:rt :以只读方式(Reading)打开文件wt:以只写方式(Writing)打开文件at:以追加方式(Appending)打开文件,新内容将从原文件后面续写r+t:以同时读写方式打开文件w+t :以同时读写创建文件,原文件内容被清除

a+t :以同时读和追加(Reading and Appdending) 方式,原文件内容被保留,新内容将从原文件的后面开始At :以读写方式打开或创建文件,适用于对磁带介质文件的操作Wt :以写入方式打 开或创建文件,原文件内容被清除,适用于磁带介质文件的操作fopen 函数有两个返回值,一个是返回一个文件标志(file Identifier) ,它会作为参数被传入其他对文件进行读写操作的命令,通常是一个非负的整数,可用此标识来对此文件进行各种处理。如果返回的文件标识是-1,则代表fopen无法打开文件,其原因可能是文件不存在,或是用户无法打开此文件权限。另一个返回值就是message ,用于返回无法打开文件的原因。为了安全起见,最好在每次使用fopen 函数时,都测试其返回值是否为有效值。下面以脚本m 文件为例来声明文件的打开。例 2-1 %exam1.m[f,message]=fopen('fileexam1', 'r')if f==-1disp (message); % 显示错误信息end 若文件fileexam1 不存在,则显示如下信息。Cannot open file.existence?permissions?memory?... 例2-2 %exam2.m[f,message]=fopen('fileexam2', 'r');if f==-1disp (message); % 显示错误信息else disp(f);end 若文件fileexam2 存在,则返回f值。 2.1.2 文件的关闭一旦完成文件的读写,最好关闭文件,以便对其进行其他操作。这时就可以使用fclose 函数来关闭文件,其适用语法如下:fclose(f) 。其中 f 为打开文件的标志,若fclose 函数返回值为0 ,则表示成功关闭 f 标志的文件;若返回值为-1,

matlab文件操作及读txt文件

matlab文件操作及读txt文件 matlab文件操作 文件操作是一种重要的输入输出方式,即从数据文件读取数据或将结果写入数据文件。MATLAB提供了一系列低层输入输出函数,专门用于文件操作。 1、文件的打开与关闭 1)打开文件 在读写文件之前,必须先用fopen函数打开或创建文件,并指定对该文件进行的操作方式。fopen函数的调用格式为: fid=fopen(文件名,‘打开方式’) 说明:其中fid用于存储文件句柄值,如果返回的句柄值大于0,则说明文件打开成功。文件名用字符串形式,表示待打开的数据文件。常见的打开方式如下: λ‘r’:只读方式打开文件(默认的方式),该文件必须已存在。 ‘r+’:读写方式打开文件,打开后先读后写。该文件必须已存在。λλ‘w’:打开后写入数据。该文件已存在则更新;不存在则创建。 ‘w+’:读写方式打开文件。先读后写。该文件已存在则更新;不存在则创建。λ λ‘a’:在打开的文件末端添加数据。文件不存在则创建。 λ‘a+’:打开文件后,先读入数据再添加数据。文件不存在则创建。

另外,在这些字符串后添加一个“t”,如‘rt’或‘wt+’,则将该文件以文本方式打开;如果添加的是“b”,则以二进制格式打开,这也是fopen函数默认的打开方式。 2)关闭文件 文件在进行完读、写等操作后,应及时关闭,以免数据丢失。关闭文件用fclose函数,调用格式为: sta=fclose(fid) 说明:该函数关闭fid所表示的文件。sta表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回-1。如果要关闭所有已打开的文件用fclose(‘all’)。 2、二进制文件的读写操作 1)写二进制文件 fwrite函数按照指定的数据精度将矩阵中的元素写入到文件中。其调用格式为: COUNT=fwrite(fid,A,precision) 说明:其中COUNT返回所写的数据元素个数(可缺省),fid为文件句柄,A用来存放写入文件的数据,precision代表数据精度,常用的数据精度有:char、uchar、int、long、float、double等。缺省数据精度为uchar,即无符号字符格式。 例6.8 将一个二进制矩阵存入磁盘文件中。 >> a=[1 2 3 4 5 6 7 8 9]; >> fid=fopen('d:test.bin','wb') %以二进制数据写入方式打开文件

Matlab数据文件的读写

Matlab数据文件的读写 在编写一个程序时,经常需要从外部读入数据,或者将程序运行的结果保存为文件。MATLAB使用多种格式打开和保存数据。本章将要介绍MATLAB中文件的读写和数据的导入导出。 了解MATLAB的基本数据操作 掌握MATLAB中文本文件的读写方式 掌握MATLAB通过界面导入导出数据 了解MATLAB中的基本输入输出函数 13.1 数据基本操作 本节介绍基本的数据操作,包括工作区的保存、导入和文件打开。 13.1.1 文件的存储 MATLAB支持工作区的保存。用户可以将工作区或工作区中的变量以文件的形式保存,以备在需要时再次导入。保存工作区可以通过菜单进行,也可以通过命令窗口进行。 1. 保存整个工作区 选择File菜单中的Save Workspace As…命令,或者单击工作区浏览器工具栏中的Save,可以将工作区中的变量保存为MAT文件。 2. 保存工作区中的变量 在工作区浏览器中,右击需要保存的变量名,选择Save

As…,将该变量保存为MAT文件。 3. 利用save命令保存 该命令可以保存工作区,或工作区中任何指定文件。该命令的调用格式如下: ● save:将工作区中的所有变量保存在当前工作区中的文件中,文件名为matlab.mat,MAT文件可以通过load函数再次导入工作区,MAT函数可以被不同的机器导入,甚至可以通过其他的程序调用。 ● save('filename'):将工作区中的所有变量保存为文件,文件名由filename指定。如果filename中包含路径,则将文件保存在相应目录下,否则默认路径为当前路径。 ● save('filename', 'var1', 'var2', ...):保存指定的变量在filename 指定的文件中。 ● save('filename', '-struct', 's'):保存结构体s中全部域作为单独的变量。 ● save('filename', '-struct', 's', 'f1', 'f2', ...):保存结构体s中的指定变量。 ● save('-regexp', expr1, expr2, ...):通过正则表达式指定待保存的变量需满足的条件。 ● save('..., 'format'),指定保存文件的格式,格式可以为MAT 文件、ASCII文件等。 13.1.2 数据导入

如何在matlab中读取TXT数据文件

如何在matlab中读取TXT数据文件 文章来源:不详作者:佚名 -------------------------------------------------------------------------------- 该文章讲述了如何在matlab中读取TXT数据文件. 今天需要做个matlab读取txt文件,在网上收集了下,查到了几篇不错的,总结一下,方便大家(包括me)使用: 下面这个函数是取filein中的第line行写入fileout中的程序,如果想实现取特定几行,只要稍微修改一下就可以。 function dataout=dataread(filein,fileout,line) fidin=fopen(filein,'r'); fidout=fopen(fileout,'w'); nline=0; while ~feof(fidin) % 判断是否为文件末尾 tline=fgetl(fidin); % 从文件读行

nline=nline+1; if nline==line fprintf(fidout,'%s\n',tline); dataout=tline; end end fclose(fidin); fclose(fidout); %%%%%%%%%%%%%%%%%%%%%%%%%% 调用格式:dataout=dataread(filein,fileout,line) 如果你的txt文件数据是矩阵形式的,而没有其它的文字,用下面的程序就可以读任意行任意列的数据

a=textread('ll.txt'); t=a(1:43,4:10); 1:43是1到43行,4:10是4到10列的数据,当然也可以只读一个数据,如果你的matlab没有textread函数,直接从mathworks网站下载就行。 根据txt文档不同种类介绍不同的读取数据方法 转自:https://www.sodocs.net/doc/901147971.html,/youngbrave/blog/item/878db31fcd4f220f304e15bb.html 一、纯数据文件(没有字母和中文,纯数字) 对于这种txt文档,从matalb中读取就简单多了 例如test.txt文件,内容为“17.901 -1.1111 33.045 17.891 -1.1286 33.045 17.884 -1.1345 33.045” 可以在command window中输入load test.txt ,然后就会产生一个test的数据文件,内容跟test.txt中的数据一样;另一种方法是在file/import data....../next/finish 也可产生一个叫test的数据文件。 二、中英文和数据如test1.txt “你好 欢迎来到

matlab文件操作fopen,fseek,fread,fclose等

文件操作是一种重要的输入输出方式,即从数据文件读取数据或将结果写入数据文件。MATLAB提供了一系列低层输入输出函数,专门用于文件操作。 1、文件的打开与关闭 1)打开文件 在读写文件之前,必须先用fopen函数打开或创建文件,并指定对该文件进行的操作方式。fopen函数的调用格式为: fid=fopen(文件名,…打开方式?) 说明:其中fid用于存储文件句柄值,如果返回的句柄值大于0,则说明文件打开成功。文件名用字符串形式,表示待打开的数据文件。常见的打开方式如下: …r?:只读方式打开文件(默认的方式),该文件必须已存在。λ …r+?:读写方式打开文件,打开后先读后写。该文件必须已存在。λ …w?:打开后写入数据。该文件已存在则更新;不存在则创建。λ …w+?:读写方式打开文件。先读后写。该文件已存在则更新;不存在则创建。λ …a?:在打开的文件末端添加数据。文件不存在则创建。λ …a+?:打开文件后,先读入数据再添加数据。文件不存在则创建。λ 另外,在这些字符串后添加一个“t”,如…rt?或…wt+?,则将该文件以文本方式打开;如果添加的是“b”,则以二进制格式打开,这也是fopen函数默认的打开方式。 2)关闭文件 文件在进行完读、写等操作后,应及时关闭,以免数据丢失。关闭文件用fclose函数,调用格式为: sta=fclose(fid) 说明:该函数关闭fid所表示的文件。sta表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回-1。如果要关闭所有已打开的文件用fclose(…all?)。 2、二进制文件的读写操作 1)写二进制文件 fwrite函数按照指定的数据精度将矩阵中的元素写入到文件中。其调用格式为: COUNT=fwrite(fid,A,precision) 说明:其中COUNT返回所写的数据元素个数(可缺省),fid为文件句柄,A用来存放写入文件的数据,precision代表数据精度,常用的数据精度有:char、uchar、int、long、float、double等。缺省数据精度为uchar,即无符号字符格式。 例6.8 将一个二进制矩阵存入磁盘文件中。 >> a=[1 2 3 4 5 6 7 8 9]; >> fid=fopen('d:\test.bin','wb') %以二进制数据写入方式打开文件 fid = 3 %其值大于0,表示打开成功 >> fwrite(fid,a,'double') ans = 9 %表示写入了9个数据

matlab文件数据读写

MATLAB中文件输入及输出指令 一、基本文件输入输出 File import/export functions. dlmread- Read ASCII delimited file. dlmwrite- Write ASCII delimited file. importdata - Load data from a file into MATLAB. daqread- Read Data Acquisition Toolbox (.daq) data file. matfinfo- Text description of MAT-file contents. xlsread - Get data and text from a spreadsheet in an Excel workbook. xlswrite- Stores numeric array or cell array in Excel workbook. xlsfinfo - Determine if file contains Microsoft Excel spreadsheet. Formatted file I/O. fgetl- Read line from file, discard newline character. fgets - Read line from file, keep newline character. fprintf - Write formatted data to file. fscanf - Read formatted data from file. textscan - Read formatted data from text file. textread - Read formatted data from text file. File opening and closing. fopen - Open file. fclose - Close file. Binary file I/O. fread - Read binary data from file. fwrite - Write binary data to file. File positioning. feof - Test for end-of-file. ferror - Inquire file error status. frewind - Rewind file. fseek - Set file position indicator. ftell - Get file position indicator.

matlab的各种数据读取(txtdatmat等格式)文件打开关闭

matlab的各种数据读取(txt,dat,mat等格式),文件打开 关闭 MATLAB提供了多种方式从磁盘读入文件或将数据输入到工作空间,即读取数据,又叫导入数据;将工作空间的变量存储到磁盘文件中称为存写数据,又叫导出数据。至于选择哪种机制,则根据下面两个因素决定:●用户所执行的操作是导入数据还是导出数据;●数据的格式为文本格式、二进制格式还是如HDF之类的标准格式。将数据导入MATLAB中最容易的方法就是使用导入数据模板(Import Wizard),使用该模板时不需要知道数据的格式,只需指定包含这些数据的文件,然后导入模板会自动处理文件内容。本章重点内容如下:●文件的打开和关闭●文本文件的读取●存写ASCII数据●二进制数据的读取●二进制数据的存写●使用I/O文件函数进行数据读写●MAT 文件的读写 2.1 文件的打开和关闭2.1.1 文件的打开无论是要读写ASCII码文件还是二进制文件,都必须先用fopen函数将其打开,在默认情况下,fopen以二进制格式打开文件,它的使用语法如下:fopen ('filename', 'mode')其中filename表示要读写的文件名称,mode则表示要对文件进行的处理方式,可以是表2-1中的任一字符串。表2-1 文本文件打开的

模式mode意义rt以只读方式(Reading)打开文件wt以只写方式(Writing)打开文件at以追加方式(Appending)打开文件,新内容将从原文件后面续写r+t以同时读写方式打开文件w+t以同时读写创建文件,原文件内容被清除a+t以同时读和追加(Reading and Appdending)方式,原文件内容被保留,新内容将从原文件的后面开始At以读写方式打开或创建文件,适用于对磁带介质文件的操作Wt以写入方式打开或创建文件,原文件内容被清除,适用于磁带介质文件的操作fopen函数有两个返回值,一个是返回一个文件标志(file Identifier),它会作为参数被传入其他对文件进行读写操作的命令,通常是一个非负的整数,可用此标识来对此文件进行各种处理。如果返回的文件标识是–1,则代表fopen无法打开文件,其原因可能是文件不存在,或是用户无法打开此文件权限。另一个返回值就是message,用于返回无法打开文件的原因。为了安全起见,最好在每次使用fopen函数时,都测试其返回值是否为有效值。下面以脚本m文件为例来声明文件的打开。例 2-1 %exam1.m[f,message]=fopen('fileexam1', 'r')if f==-1disp (message); %显示错误信息end若文件fileexam1不存在,则显示如下信息。Cannot open file.existence?permissions?memory?... 例2-2 %exam2.m[f,message]=fopen('fileexam2', 'r');if

Matlab 的数据文件读取

Matlab 的数据文件I/ O 的实现方法 0 引言 Matlab 是一个功能强大的计算机辅助设计软件,被称为“草稿纸式的科学计算语言”,它具有强大的符号、数值计算、矩阵运算以及图形显示的功能,它被广泛地应用在数字信号处理、自动控制、图像处理、神经网络、优化设计、模糊逻辑、仿真、小波分析等方面。 Matlab 应用中常需要实现Matlab 与其他应用程序的数据共享,即需将数据文件读入Matlab 进行有效的数据处理,然后将Matlab 处理好的数据保存为数据文件,以便其他应用程序所使用。Matlab 支持多种文件格式的输入和输出,如.dat 、.txt 、.mat 、.bmp 等。在实际进行数据文件的I/ O 时常出现错误,本文详细讨论Matlab 中数据文件I/ O 的实现方法,并给出每种方法的具体实例。所有的数据文件I/ O 操作文件都在Matlab 中,无需安装专门的工具箱。数据文件I/ O 程序可分为两种基本类型:低级和高级。高级包括一些专门的函数以支持特定格式的读和写,相对而言低级则比较灵活。 1 高级数据文件I/ O 方式命令 高级数据文件I/ O 命令主要有Load 和Save 。Save 可以将Matlab 变量以ASCII 码格式或MAT存储, Load 可以读ASCII 码格式的变量或MAT 文件到Mat2lab 工作区。这两条命令的使用比较简单, (为便于读者可直接将以下文本输入计算机运行,注释采用英文) 如: %This file demonstrates the behavior of LOAD and SAVE clear all%Clear all variables x = 5 ;x2 = 10 ; %Create x and x2 whos %To ,display the variables in workspace pause %Pause so as to observe save xdata x%Save only x into xdata. mat clear all%Clear all variables load xdata%Load xdata. mat whos %Note that x is back pause x2 = 10 ; %Recreate x2 whos pause save xdata x x2%Now save using a wild card clear all%Clear all variables load xdata%Load xdata. mat whos 使用Load 和Save 还可以实现一次读多个文件或将数据存入多个文件,以Save 命令为例(Load 类似) ,程序如下: a = rand(6) ; %make a (6 3 6) random number filename = ['a1.txt';'a2.txt';'a3.txt';'a4.txt';'a5.txt';'a6.txt'; ] ; %list your file names for i=i:1ength(a) temp = a(:,i) ; save (filename (i , :) ,'temp''-ascii') ; %save to the specified file end

matlab文件读写.doc

Matlab文件和数据的导入与导出 在编写一个程序时,经常需要从外部读入数据,或者将程序运行的结果保存为文件。MATLAB使用多种格式打开和保存数据。本章将要介绍MATLAB中文件的读写和数据的导入导出。 13.1 数据基本操作 本节介绍基本的数据操作,包括工作区的保存、导入和文件打开。 13.1.1 文件的存储 MATLAB支持工作区的保存。用户可以将工作区或工作区中的变量以文件的形式保存,以备在需要时再次导入。保存工作区可以通过菜单进行,也可以通过命令窗口进行。 1. 保存整个工作区 选择File菜单中的Save Workspace As…命令,或者单击工作区浏览器工具栏中的Save,可以将工作区中的变量保存为MAT文件。 2. 保存工作区中的变量 在工作区浏览器中,右击需要保存的变量名,选择Save As…,将该变量保存为MAT 文件。 3. 利用save命令保存 该命令可以保存工作区,或工作区中任何指定文件。该命令的调用格式如下: ●save:将工作区中的所有变量保存在当前工作区中的文件中,文件名为matlab.mat,MAT 文件可以通过load函数再次导入工作区,MA T函数可以被不同的机器导入,甚至可以通过其他的程序调用。 ●save('filename'):将工作区中的所有变量保存为文件,文件名由filename指定。如果filename中包含路径,则将文件保存在相应目录下,否则默认路径为当前路径。 ●save('filename', 'var1', 'var2', ...):保存指定的变量在filename 指定的文件中。 ●save('filename', '-struct', 's'):保存结构体s中全部域作为单独的变量。 ●save('filename', '-struct', 's', 'f1', 'f2', ...):保存结构体s中的指定变量。 ●save('-regexp', expr1, expr2, ...):通过正则表达式指定待保存的变量需满足的条件。 ●save('..., 'format'),指定保存文件的格式,格式可以为MAT文件、ASCII文件等。

matlab使用文本文件进行文件存储

使用文本文件(.txt)进行数据存取的技巧总结(相当的经典) 使用文本文件(.txt)进行数据存取的技巧总结 由于本帖内容较多,部分转自他人的心得,因此,凡转贴的地方仅用“----转----”标注,原作者略去,在此对所有原作者表示感谢! 特别说明:由于大家在I/O 存取上以txt 文件为主,且读取比存储更麻烦(存储的话fwrite, fprintf 基本够用),因此下面的讨论主要集中在“txt 文件的读取”上。除了标注了“转”之外,其余心得均出于本人经验之结果,欢迎大家指正、补充。 一. 基本知识: --------------------------------------------------转---------------------------------------------------- 1. 二进制文件与文本文件的区别: 将文件看作是由一个一个字节(byte) 组成的,那么文本文件中的每个字节的最高位都是0,也就是说文本文件使用了一个字节中的七位来表示所有的信息,而二进制文件则是将字节中的所有位都用上了。这就是两者的区别;接着,第二个问题就是文件按照文本方式或者二进制方式打开,两者会有什么不同呢?其实不管是二进制文件也好,还是文本文件也好,都是一连串的0和1,但是打开方式不同,对于这些0和1的处理也就不同。如果按照文本方式打开,在打开的时候会进行translate,将每个字节转换成ASCII码,而以按照二进制方式打开的话,则不会进行任何的translate;最后就是文本文件和二进制文件在编辑的时候,使用的方式也是不同的。譬如,你在记事本中进行文本编辑的时候,你进行编辑的最小单位是字节(byte);而对二进制文件进行编辑的话,最小单位则是位(bit),当然我们都不会直接通过手工的方式对二进制文件进行编辑了。 从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种: ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式为: ASCII码:00110101 00110110 00110111 00111000 ↓ ↓ ↓ ↓ 十进制码:5678 共占用4个字节。ASCII码文件可在屏幕上按字符显示,例如源程序文件就是ASCII文件,用DOS 命令TYPE可显示文件的内容。由于是按字符显示,因此能读懂文件内容。 二进制文件是按二进制的编码方式来存放文件的。例如,数5678的存储形式为:00010110 00101110 只占二个字节。二进制文件虽然也可在屏幕上显示,但其内容无法读懂。C系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。因此也把这种文件称作“流式文件”。 2. 文本模式(textmode)和二进制模式(binarymode)有什么区别? 流可以分为两种类型:文本流和二进制流。文本流是解释性的,最长可达255个字符,其中回车/

matlab进行文件读写操作

matlab进行文件读写操作 输入输出方式,即从数据文件读取数据或将结果写入数据文件。MATLAB提供了一系列低层输入输出函数,专门用于文件操作。 1、文件的打开与关闭 1)打开文件 在读写文件之前,必须先用fopen函数打开或创建文件,并指定对该文件进行的操作方式。fopen函数的调用格式为: fid=fopen(文件名,‘打开方式’) 说明:其中fid用于存储文件句柄值,如果返回的句柄值大于0,则说明文件打开成功。文件名用字符串形式,表示待打开的数据文件。常见的打开方式如下: ?‘r’:只读方式打开文件(默认的方式),该文件必须已存在。?‘r+’:读写方式打开文件,打开后先读后写。该文件必须已存在。?‘w’:打开后写入数据。该文件已存在则更新;不存在则创建。?‘w+’:读写方式打开文件。先读后写。该文件已存在则更新;不存在则创建。 ?‘a’:在打开的文件末端添加数据。文件不存在则创建。 ?‘a+’:打开文件后,先读入数据再添加数据。文件不存在则创建。

另外,在这些字符串后添加一个“t”,如‘rt’或‘wt+’,则将该文件以文本方式打开;如果添加的是“b”,则以二进制格式打开,这也是fopen 函数默认的打开方式。 2)关闭文件 文件在进行完读、写等操作后,应及时关闭,以免数据丢失。关闭文件用fclose函数,调用格式为: sta=fclose(fid) 说明:该函数关闭fid所表示的文件。sta表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回-1。如果要关闭所有已打开的文件用fclose(‘all’)。 2、二进制文件的读写操作 1)写二进制文件 fwrite函数按照指定的数据精度将矩阵中的元素写入到文件中。其调用格式为: COUNT=fwrite(fid,A,precision) 说明:其中COUNT返回所写的数据元素个数(可缺省),fid为文件句柄,A用来存放写入文件的数据,precision代表数据精度,常用的数据精度有:char、uchar、int、long、float、double等。缺省数据精度为uchar,即无符号字符格式。 例6.8将一个二进制矩阵存入磁盘文件中。 >>a=[123456789]; >>fid=fopen('d:\test.bin','wb')%以

matlab中各种数据的读取

本技术支持指南主要处理:ASCII, binary, and MAT files. 要得到MATLAB中可用来读写各种文件格式的完全函数列表,可以键入以下命令: help iofun MATLAB中有两种文件I/O程序:high level and low level. High level routines:包括现成的函数,可以用来读写特殊格式的数据,并 且只需要少量的编程。 Low level routines:可以更加灵活的完成相对特殊的任务,需要较多的额外编程。 High level routines 包括现成的函数,可以用来读写特殊格式的数据,并且只需要少量的编程。 举个例子,如果你有一个包含数值和字母的文本文件(text file)想导入MATLAB,你可以调用一些low level routines自己写一个函数,或者是简单的用TEXTREAD函数。 使用high level routines的关键是:文件必须是相似的(homogeneous),换句话说,文件必须有一致的格式。下面的段落描述一些high level file I/O routines并给出一些例子帮助理解概念。 LOAD/SAVE 主要的high level file I/O routines 是LOAD和SAVE函数。LOAD 可以读MAT-file data或者用空格间隔的格式相似的ASCII data. SAVE可以将MATLAB变量写入MAT-file格式或者空格间隔的ASCII data。大多数情况下,语法相当简单。下面的例子用到数值由空格间隔的ASCII file sample_file.txt: 1 5 4 16 8 5 43 2 6 8 6 8 4 32 1 90 7 8 7 6 5 9 81 2 3

matlab文件数据格式化读写小程序设计

文件数据格式化读写 一、实验目的 通过编辑和运行简单的matlab数据读写程序,熟悉和掌握数据格式化输入输出方法。 二、实验内容: 1、文件的打开与关闭 1)创建标准的对话框并通过交互式操作取得文件名 [FileName,PathName,FilterIndex]=uigetfile(FilterSpec,DialogTitle,Def aultName) FileName:返回的文件名 PathName:返回的文件的路径名 FilterIndex:选择的文件类型 FilterSpec:文件类型设置 DialogTitle:打开对话框的标题 DefaultName:默认指向的文件名 例: a.最简单的形式,只设置了一种可选择的文件类型 [FileName,PathName] = uigetfile('*.m','Select the M-file'); b.设置多种文件类型 [filename, pathname] = uigetfile({'*.txt';'*.xls';'*.mat';'*.*'},'File Selector'); c.所有文件类型 [FileName,PathName] = uigetfile('*.*'); d.路径文件名合并

file = fullfile(pathname, filename) 或者file = [pathname, filename] 2)打开文件 在读写文件之前,必须先用fopen函数打开或创建文件,并指定对该文件进行的操作方式。fopen函数的调用格式为:fid=fopen(文件名,‘打开方式’) 说明:其中fid用于存储文件句柄值,如果返回的句柄值大于0,则说明文件打开成功。文件名用字符串形式,表示待打开的数据文件。常见的打开方式如下:‘r’:只读方式打开文件(默认的方式),该文件必须已存在。 ‘r+’:读写方式打开文件,打开后先读后写。该文件必须已存在。 ‘w’:打开后写入数据。该文件已存在则更新;不存在则创建。 ‘w+’:读写方式打开文件。先读后写。该文件已存在则更新;不存在则创建。 ‘a’:在打开的文件末端添加数据。文件不存在则创建。 ‘a+’:打开文件后,先读入数据再添加数据。文件不存在则创建。 另外,在这些字符串后添加一个“t”,如‘rt’或‘wt+’,则将该文件以文本方式打开;如果添加的是“b”,则以二进制格式打开,这也是fopen函数默认的打开方式。 例:fid = fopen(file,'rt'); 2)关闭文件 文件在进行完读、写等操作后,应及时关闭,以免数据丢失。关闭文件用fclose 函数,调用格式为: sta = fclose(fid) 说明:该函数关闭fid所表示的文件。sta表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回-1。如果要关闭所有已打开的文件用fclose(‘all’)。 2、文本文件的读写操作 1)读文本文件 fscanf函数可以读取文本文件的内容,并按指定格式存入矩阵。其调用格式为:

Matlab文件读写

读文件: 1. 纯数字 load test.txt % 导入文本数据,并保存在 test 变量; x= load('test.txt') % 导入文本数据,并保存到data变量; 2. 科学计数法数字 x = load('test.txt') x = dlmread('test.txt') 3. 符号隔开的数字 x= load('test.txt') x = dlmread('test.txt') x = csvread('test.txt') 4. 含有头信息 x = importdata('test.txt') x.data % 查看读取的数值型数据 x.textdata % 查看读取的文本数据 返回结构体变量、分隔符、头文件行数:[x, s, h] = importdata('examp02_07.txt'); 逗号作为分隔符,设置读取初始位置:x = dlmread('test.txt', ',', 2, 0) 空格作为分隔符,头文件信息 2 行 :x = importdata('examp02_08.txt',' ',2)

fid = fopen('test.txt','r'); % 以只读方式打开 line1 = fgets(fid); % 读取文件的第1行 line2 = fgets(fid); % 读取文件的第2行 % 从第3行开始读取数据,将读取的相同数据类型的连续元胞连接成一个元胞数组 A = textscan(fid, '%f %f %f, 'CollectOutput', 1) line6 = fgets(fid); % 读取文件的第6行 line7 = fgets(fid); % 读取文件的第7行 B = textscan(fid, '%f %f %f', 'CollectOutput', 1) fclose(fid); fid = fopen('test.txt', 'r'); C_data = textscan(fid, '%f%f%f', 'HeaderLines', 2); % 从第3行开始读 fclose(fid); 5. 不整齐数字 x = dlmread('test.txt') % 用 0 补齐 6. 复数 x = dlmread('test.txt') fid = fopen('test.txt', 'r'); A = textscan(fid, '%f %*s %f %*s','delimiter',' ', 'CollectOutput', 1) fclose(fid);

Matlab的各种数据读取、文件读写等操作汇总

Matlab的各种数据读取、文件读写等操作汇总 MATLAB提供了多种方式从磁盘读入文件或将数据输 入到工作空间,即读取数据,又叫导入数据;将工作空间的变量存储到磁盘文件中称为存写数据,又叫导出数据。至于选择哪种机制,则根据下面两个因素决定:● 用户所执行的操作是导入数据还是导出数据;● 数据的格式为文本格式、二进制格式还是如HDF之类的标准格式。将数据导入MATLAB中最容易的方法就是使用导入数据模板(Import Wizard),使用该模板时不需要知道数据的格式,只需指定包含这些数据的文件,然后导入模板会自动处理文件内容。本章重点内容如下:● 文件的打开和关闭● 文本文件的读取● 存写ASCII数据● 二进制数据的读取● 二进制数据的存写● 使用I/O文件函数进行数据读写● MAT 文件的读写 2.1 文件的打开和关闭2.1.1 文件的打开无论是要读写ASCII码文件还是二进制文件,都必须先用fopen函数将其打开,在默认情况下,fopen以二进制格式打开文件,它 的使用语法如下:fopen ('filename', 'mode')其中filename 表示要读写的文件名称,mode则表示要对文件进行的处理 方式,如下:rt:以只读方式(Reading)打开文件wt:以只写方式(Writing)打开文件at:以追加方式(Appending)打开文件,新内容将从原文件后面续写r+t:以同时读写方式打开文件

w+t:以同时读写创建文件,原文件内容被清除a+t:以同时读和追加(Reading and Appdending)方式,原文件内容被保留,新内容将从原文件的后面开始At:以读写方式打开或创建文件,适用于对磁带介质文件的操作Wt:以写入方式打开或创建文件,原文件内容被清除,适用于磁带介质文件的操作 fopen函数有两个返回值,一个是返回一个文件标志(file Identifier),它会作为参数被传入其他对文件进行读写操作的命令,通常是一个非负的整数,可用此标识来对此文件进行各种处理。如果返回的文件标识是–1,则代表fopen无法打开文件,其原因可能是文件不存在,或是用户无法打开此文件权限。另一个返回值就是message,用于返回无法打开文件的原因。为了安全起见,最好在每次使用fopen函数时,都测试其返回值是否为有效值。下面以脚本m文件为例来声明文件的打开。例 2-1 %exam1.m[f,message]=fopen('fileexam1', 'r')if f==-1disp (message); %显示错误信息end若文件fileexam1不存在,则显示如下信息。Cannot open file.existence?permissions?memory?... 例2-2 %exam2.m[f,message]=fopen('fileexam2', 'r');if f==-1disp (message); %显示错误信息else disp(f);end若文件fileexam2存在,则返回f值。

相关主题