Matlab中txt文件的读写操作命令及操作

Matlab中txt文件的读写操作命令及操作
Matlab中txt文件的读写操作命令及操作

Matlab中txt文件的读写操作命令整理

将txt文件中的数据按行显示输出

内容:从一个列向量文件中按要求读取指定部分数据后存储成另一个文件。

clear; clc; close all;

%k=1:.1:50;

%save org_di.txt k-ascii; %用save格式受限制

fid=fopen('org_di.txt'); %原始数据是单列多行

%temp=fread(fid); %用fread法读出的数据有问题,类似32,43等

temp=fscanf(fid,'%f');

%temp=load ('org_di.txt'); %

n=length(temp);

m=5;

for k=1:2^m %指定保存前面部分内容?

temp1(k)=temp(k);

end

% save org_di2.txt -ascii temp1;

fclose(fid);

fid=fopen('org_di2.txt','w');

fprintf(fid,'%f \r\n',temp1(1,:)); %若直接用temp1,则依然是多行单列,并没有在每行后面加回车换行,只是在最后加的回车换行。可以直接用temp1

fclose(fid);

文件操作是一种重要的输入输出方式,即从数据文件读取数据或将结果写入数据文件。MATLAB提供了一系列低层输入输出函数,专门用于文件操作。

1、文件的打开与关闭

1) 打开文件fopen

在读写文件之前,必须先用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,即无符号字符格式。

示例:将一个二进制矩阵存入磁盘文件中。

>> 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个数据

>> fclose(fid)

ans =

0 %表示关闭成功

2) 读二进制文件

fread函数可以读取二进制文件的数据,并将数据存入矩阵。其调用格式为:

[A,COUNT]=fread(fid,size,precision)

说明:其中A是用于存放读取数据的矩阵、COUNT是返回所读取的数据元素个数、fid为文件句柄、size为可选项,若不选用则读取整个文件内容;若选用则它的值可以是下列值:N(读取N个元素到一个列向量)、inf(读取整个文件)、[M,N](读数据到M×N的矩阵中,数据按列存放)。 precision用于控制所写数据的精度,其形式与fwrite函数相同。

3、文本文件的读写操作

1) 读文本文件

fscanf函数可以读取文本文件的内容,并按指定格式存入矩阵。其调用格式为:[A,COUNT]=fscanf(fid,format,size)

说明:其中A用来存放读取的数据,COUNT返回所读取的数据元素个数,fid为文件句柄,format用来控制读取的数据格式,由%加上格式符组成,常见的格式符有:d(整型)、f(浮点型)、s(字符串型)、c(字符型)等,

在%与格式符之间还可以插入附加格式说明符,如数据宽度说明等。size为可选项,决定矩阵A中数据的排列形式,它可以取下列值:N(读取N个元素到一个列向量)、inf(读取整个文件)、[M,N](读数据到M×N的矩阵中,数据按列存放)。

2) 写文本文件

fprintf函数可以将数据按指定格式写入到文本文件中。其调用格式为:

fprintf(fid,format,A)

说明:fid为文件句柄,指定要写入数据的文件,format是用来控制所写数据格式的格式符,与fscanf函数相同,A是用来存放数据的矩阵或变量。

例6.9 创建一个字符矩阵并存入磁盘,再读出赋值给另一个矩阵。

>> a='string';

>> fid=fopen('d:\char1.txt','w');

>> fprintf(fid,'%s',a);

>> fclose(fid);

>> fid1=fopen('d:\char1.txt','rt');

>> fid1=fopen('d:\char1.txt','rt');

>> b=fscanf(fid1,'%s')

b = string

示例:Matlab读txt文件

fid=fopen('fx.txt','r'); %得到文件号

[f,count]=fscanf(fid,'%f %f',[12,90]);

%把文件号1的数据读到f中。其中f是[12 90]的矩阵

%这里'%f %f'表示读取数据的形势,他是按原始数据型读出

fclose(fid); %关闭文件

另外有的txt文件还可以用load来打开,其语句为

f=load(‘fx.txt‘)

load方法最简单,但个人觉得用第一种方式较好。因为有些时候,特别是fx.txt 的一行中有多个数据时用load就比较麻烦了。

PS:数据文件定位

MATLAB提供了与文件定位操作有关的函数fseek和ftell。fseek函数用于定位文件位置指针,其调用格式为:

status=fseek(fid, offset, origin)

其中fid为文件句柄,offset表示位置指针相对移动的字节数,OFFSET values are interpreted as follows:

> 0 Move toward the end of the file.

= 0 Do not change position.

< 0 Move toward the beginning of the file.

origin表示位置指针移动的参照位置,ORIGIN values are interpreted as follows:

'bof' or -1 Beginning of file

'cof' or 0 Current position in file

'eof' or 1 End of file。若定位成功,status返回值为0,否则返回值为–1。

ftell函数返回文件指针的当前位置,其调用格式为:

position=ftell (fid)

返回值为从文件开始到指针当前位置的字节数。若返回值为–1表示获取文件当前位置失败。

例:FID=fopen('sw.m','r')

fseek(FID,10,-1)

ans =

>> ftell(FID)

ans =

10

>> fseek(FID,-10,1)

ans =

>> ftell(FID)

ans =

2180

文件指针可以移动到当前文件末尾的后面,但不能移动到开头的前面;当把指针移动到文件末尾后面时,若关闭文件则文件大小会自动增长到文件指针所指的大小,用这种方法可以很容易创建一个很大的文件,当然新增加的文件内容是随机的。

MATLAB混合编程中的数据交流

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==-1

disp (message); %显示错误信息

end

若文件fileexam1不存在,则显示如下信息。

Cannot open file.existence?permissions?memory?...

例2-2 %exam2.m

[f,message]=fopen('fileexam2', 'r');

if f==-1

disp (message); %显示错误信息

else

disp(f);

end

若文件fileexam2存在,则返回f值。

2.1.2 文件的关闭

一旦完成文件的读写,最好关闭文件,以便对其进行其他操作。这时就可以使用fclose函数来关闭文件,其适用语法如下。

fclose(f)

其中f为打开文件的标志,若fclose函数返回值为0,则表示成功关闭f标志的文件;若返回值为–1,则表示无法成功关闭该文件。一般来说,在完成对文件的读写操作后就应关闭它,以免造成系统资源浪费。此外,需注意的是,打开和关闭文件都比较耗时,因此为了提高程序执行效率,最好不要在循环体内使用文件。

若要一次关闭打开的所有文件,可以使用下面的命令:

fclose all

2.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 physic

joe 80 90 60

susan 78 98 88

rob 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

数值数据

仅cooma

1

dlmread

数值数据

任何字符

1

fscanf

字母和数值

任何字符

1

load

数值数据

仅space

1

textread

字母和数值

任何字符

多返回值

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,下面的

语句将文件导入工作空间并赋给变量A

A=load('my_data.txt');

4. 读取有分隔符的ASCII数据文件

如果数据文件不使用空格符而是使用逗号或是其他符号作为分隔符,用户可以选

择多个可用的导入数据函数。最简单的便是使用函数dlmread。

举个例子来说,一个名为lcode.dat的数据文件,数据内容由逗号分隔。

0.3445,0.8433,0.7865

0.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 num4

0.3242 0.4324 0.3455 0.6754

0.4566 0.9368 0.9892 0.9274

0.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.4658

num2 =

0.4324

0.9368

0.2832

num3 =

0.3455

0.9892

0.9373

num4 =

0.6754

0.9274

0.8233

6. 读取字母数值混合的数据

若数据文件中包含了字母和数值混合的ASCII码数据,也可以使用函数textread 来读取数据。由上一小节知道,函数textread可以返回多个输出变量,实际上用户还可以通过参数指定每个变量的数据类型。

例如要把文件my_exam.dat的全部内容读入工作空间,需要在textread行数的输入参数中指定数据文件的名称和格式。

文件my_exam.dat包含的混合的字母和数值如下:

Joe gradeA 4.9 pass

susan 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.0000

answer =

'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.93547

0.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格式的音频视频数据

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

存写AVI格式的音频视频数据

cdfwrite

.cdf

存写CDF格式的数据

hdf

.hdf

存写HDF格式的数据

imwrite

.bmp .cur .gif .hdf .ico

.jpg .pbm .pgm .png .pnm

.ppm .pcx .tif .xwd .ras

存写各种格式的图形数据

wavwrite

存写 Windows 系统的声音文件

xlswrite

.xls

存写 Excel 电子表格数据

在MATLAB中可以将一系列的图像保存为电影,这样使用电影播放函数就可以进行回放,保存方法可以同保存其他MATLAB工作空间变量一样,通过采用MAT文件格式保存。但是若要浏览该电影,必须在MATLAB环境下。在以某种格式存写一系列的MATLAB图像时,不需要在MATLBA 环境下进行预览,通常采用的格式为AVI格式。AVI是一种文件格式,在PC 机上的Windows系统或UNIX操作系统下可以进行动画或视频的播放。

若要以AVI格式来存写MATLAB图像,步骤如下:

(1) 用avifile函数建立一个AVI文件。

(2) 用addframe函数来捕捉图像并保存到AVI 文件中。

(3) 使用close函数关闭AVI文件。

注意:

若要将一个已经存在的MATLAB电影文件转换为AVI文件,需使用函数

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 it

fread函数的第二个输入参数可以控制返回矩阵的大小,例如:

>> 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.7919

2.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.0000

3.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执行以下命令,然后测试文件指针位置

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文件各种操作方法(全)

1.1 文件的打开和关闭 1.1.1 文件的打开 fopen ('filename', 'mode') mode格式有: ‘r’:只读方式打开文件(默认的方式),该文件必须已存在。 ‘r+’:读写方式打开文件,打开后先读后写。该文件必须已存在。 ‘w’:打开后写入数据。该文件已存在则更新;不存在则创建。 ‘w+’:读写方式打开文件。先读后写。该文件已存在则更新;不存在则创建。 ‘a’:在打开的文件末端添加数据。文件不存在则创建。 ‘a+’:打开文件后,先读入数据再添加数据。文件不存在则创建。 如果rt表示该文件以文本方式打开,如果添加的是“b”,则以二进制格式打开,这也是fopen函数默认的打开方式。 Fopen函数两个返回值: 1、一个是返回一个文件标识(file Identifier),它会作为参数被传入其他对文件进 行读写操作的命令,通常是一个非负的整数,可用此标识来对此文件进行各种处理。 (如果返回的文件标识是–1,则代表fopen无法打开文件,其原因可能是文件不 存在,或是用户无法打开此文件权限); 2、另一个返回值就是message,用于返回无法打开文件的原因; 例:1-1 [f,message]=fopen('fileexam1', 'r') if f==-1 disp(message); %显示错误信息 end (若文件fileexam1不存在,则显示如下信息。 Cannot open file.existence?permissions?memory?) 例:1-2 [f,message]=fopen('fileexam2', 'r'); if f==-1 disp (message); %显示错误信息 else disp(f); end 若文件fileexam2存在,则返回f值。 1.1.2文件的关闭 Fclose(f) F为打开文件的标志,若若fclose函数返回值为0,则表示成功关闭f标志的文件;若返回值为–1,则表示无法成功关闭该文件。(打开和关闭文件比较耗时,最好不要在循环体内使用文件) 若要一次关闭打开的所有文件,可以使用下面的命令:fclose all

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操作txt总结

使用文本文件(.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 ↓↓↓↓十进制码: 5 6 7 8 共占用4个字节。ASCII码文件可在屏幕上按字符显示,例如源程序文件就是ASCII文件,用DOS 命令TYPE可显示文件的内容。由于是按字符显示,因此能读懂文件内容。 二进制文件是按二进制的编码方式来存放文件的。例如,数5678的存储形式为: 00010110 00101110 只占二个字节。二进制文件虽然也可在屏幕上显示,但其内容无法读懂。C系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。因此也把这种文件称作“流式文

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代表数据精度,常用的数据精度有: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个数据 >> 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值。 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文件的导入导出

GprMaxV2.0中GprMax2D输入文件的命令(1/2) 原创 修改人 修改时间 版本 微风无尘 微风无尘 2012.3.9 V1.1 实验环境: 操作系统:Windows 7 软件版本:MATLAB 7.1 & GprMaxV2.0 参考文献: GprMaxV2.0软件manual文件夹下的UserGuideV2.pdf。 GprMaxV2.0下载地址:https://www.360docs.net/doc/ed16978622.html,/Download.html 说明:翻译得不好,还望大家见谅,因为我也是边看边译的。 3.1 GprMax2D命令的一般注意事项 为了描述GprMax2D/3D命令及其参数,我们作以下约定: f表示浮点数(如1.5或15e-1、1.5e1) i表示整数

c表示字符 str表示字符串 file表示输入文件名 所有空间距离的基本单位为米 所有时间的基本单位为秒 所有频率参数的基本单位是Hz 3.2 GprMax2D 2.0版本共有32条命令:#title: #domain: #dx_dy: #time_step_stability_factor: #time_window: #messages: #number_of_media: #nips_number: #media_file: #geometry_file: #medium: #abc_type:

#abc_order: #abc_stability_factors: #abc_optimization_angles: #abc_mixing_parameters: #pml_layers: #box: #cylinder: #x_segment: #y_segment: #triangle: #analysis: #end_analysis: #tx: #rx: #rx_box: #snapshot: #tx_steps: #rx_steps: #line_source: #excitation_file:

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实用操作指令

matlab编辑器的快捷键 在编辑器(Editor>中: 1> 【Tab】<或【Ctrl+]】)――增加缩进<对多行有效) 2> 【Ctrl+[】--减少缩进<对多行有效) 3> 【Ctrl+I】--自动缩进<即自动排版,对多行有效) 4> 【Ctrl+R】――注释<对多行有效) 5> 【Ctrl+T】――去掉注释<对多行有效) 6> 【Ctrl+B】――括号配对检查<对版本6.5有效,但版本7.0无效,不知道是取消了还是换了另外的快捷键,请大牛们指点,其他版本没有测试过) 7> 【F12】――设置或取消断点 8> 【F5】――运行程序 matlab命令 一、常用对象操作:除了一般windows窗口的常用功能键外。 1、!dir 可以查看当前工作目录的文件。 !dir& 可以在dos状态下查看。 2、who 可以查看当前工作空间变量名, whos 可以查看变量名细节。 3、功能键: 功能键快捷键说明 方向上键 Ctrl+P 返回前一行输入 方向下键 Ctrl+N 返回下一行输入 方向左键 Ctrl+B 光标向后移一个字符 方向右键 Ctrl+F 光标向前移一个字符 Ctrl+方向右键 Ctrl+R 光标向右移一个字符 Ctrl+方向左键 Ctrl+L 光标向左移一个字符 home Ctrl+A 光标移到行首 End Ctrl+E 光标移到行尾 Esc Ctrl+U 清除一行 Del Ctrl+D 清除光标所在的字符 Backspace Ctrl+H 删除光标前一个字符 Ctrl+K 删除到行尾 Ctrl+C 中断正在执行的命令 4、clc可以命令窗口显示的内容,但并不清除工作空间。 二、函数及运算 1、运算符: +:加,-:减, *:乘, /:除, \:左除 ^:幂,‘:复数的共轭转置, <):制定运算顺序。2、常用函数表: sin( > 正弦<变量为弧度) Cot( > 余切<变量为弧度) sind( > 正弦<变量为度数)

如何在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.360docs.net/doc/ed16978622.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文件操作 文件操作是一种重要的输入输出方式,即从数据文件读取数据或将结果写入数据文件。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用

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常用基本命令

有关命令行环境的一些操作: (1) clc擦去一页命令窗口,光标回屏幕左上角 (2) clear从工作空间清除所有变量 (3) clf清除图形窗口内容 (4) who列出当前工作空间中的变量 (5) whos列出当前工作空间中的变量及信息?(6) delete <文件名> (7) which <文件名> (9) clear all (10) help <命令名> (11) save name (12) save name x y (13) load name (14) load name x y (15) diary name1.m (16) type name.m (17) what 快捷键: Ctrl+p Ctrl+n Ctrl+b Ctrl+f

Ctrl + ← Ctrl+r Ctrl + → Ctrl+l Home Ctrl+a End Ctrl+e Esc Ctrl+u Del Ctrl+d 或用工具栏上的Workspace 浏览器从磁盘删除指定文件 查找指定文件的路径 从工作空间清除所有变量和函数 查询所列命令的帮助信息 保存工作空间变量到文件name.mat 保存工作空间变量x y到文件name.mat 下载‘name’文件中的所有变量到工作空间 下载‘name’文件中的变量x y到工作空间 保存工作空间一段文本到文件name1.m 在工作空间查看name.m文件内容 列出当前目录下的m文件和mat文件 调用上一次的命令 调用下一行的命令 退后一格 前移一格

向右移一个单词 向xx一个单词 光标移到行首 光标移到行尾 清除一行 清除光标后字符 Backspace Ctrl+h 清除光标前字符Ctrl+k 清除光标至行尾字Ctrl+c 中断程序运行一.常用的窗口命令 help 启动联机帮助文件显示 what 列出当前目录下的有关文件 type 列出M文件 lookfor 对help信息中的关键词查找which 找出函数与文件所在的目录名demo 运行MATLAB的演示程序 path 设置或查询MATLAB的路径 二.有关文件及其操作的语句 cd或ls 改变当前的工作目录 cd ..显示上一层目录 pwd 显示当前目录

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

相关文档
最新文档