1、MATLAB 文件操作相关命令(2010-05-29 09:32:12) 转载原文标签: 转载分类: Matlab 学习原文地址: MATLAB 文件操作相关命令作者:short_smile输入输出语句(1) 实时交互输入输出input;keyboard(2) 完全复制式的文件存取*1) savesave save 文件名 xsave 文件名 x y zsave 文件名 x y z asciisave 文件名 x y z ascii doublesave 文件名 x y z ascii double tabssave 已有文件名 x y z append注 1:save 的默认文件名是 fna
2、me.m注 2:ascii 8 字节 ascii 码方式注 3:ascii 16 字节 ascii 码方式注 3:ascii double tabs 格式排列注 3:append 续后存放*2) loadloadload 文件名注 1:load 的默认文件名是 fname.m(3) 文件存取管理(建立与读写)文件管理(打开、写入、读出、关闭、定位),*1)“fopen”打开文件,赋予文件代号。语法 1:FID= FOPEN(filename,permission)用指定的方式打开文件FID=+N(N 是正整数):表示文件打开成功,文件代号是 N.FID=-1 : 表示文件打开不成功。FID 在
3、此次文件关闭前总是有效的。如果以读方式打开,matlab 首先搜索工作目录,其次搜索 matlab 的其他目录,“permission”是打开方式参数。打开方式参数由以下字符串确定:r 读出w 写入(文件若不存在,自动创建)a 后续写入(文件若不存在,自动创建)r+ 读出和写入(文件应已存在)w+ 重新刷新写入,(文件若不存在,自动创建)a+ 后续写入(文件若不存在,自动创建)w 重新写入,但不自动刷新a 后续写入,但不自动刷新文件的存储格式:文件打开的默认方式是:二进制。以文本方式打开,可以在方式参数“permission”中加入“t”文件将,如“rt”,“wt+”语法 2:fid,mess
4、age= FOPEN(filename,permission)FID=-1 ,文件打开不成功时,返回错误信息语法 3:fid,message= FOPEN(filename,permission,machineformat)permission: 用指定的方式打开文件。machineformat: 指定读写时用的数据格式。数据格式(machineformat)取值如下native or n Local machine format - the defaultieee-le or l IEEE 浮点数( little-endian byte ordering)ieee-be or b IEEE
5、浮点数( big-endian byte ordering)vaxd or d VAX D 浮点数 (VAX ordering)vaxg or g VAX g 浮点数 (VAX ordering)cray or c Cray 浮点数 (big-endian byte ordering)长型数据ieee-le.l64 or a IEEE 浮点数(little-endian byte ordering 和 64 位)long data typeiecc-be.l64 or s IEEE 浮点数(big-endian byte ordering 和 64 位)long data tw语法 4: fi
6、lename,permission,machineformat=fopen(fid)。查看打开文件的情况返回文件名、打开方式、文件格式。如果 fid 不存在,则返回变量。fid=fopen(allall)返回当前所有打开的文件。*2)“fwrite”以二进制形式,向文件写入数据。语法 1:count=fwrite(fid,a,precision)将矩阵 a 写入 fid 指向的打开的文件,matlab 自动将 a 元值转换成 precision 规定的精度(见后),写成列的形式。count 是返回值,写入成功,返回写入数据个数,否则返回 0。语法 2:count=fwrite(fid,a,pr
7、ecision,skip)skip:取正整数 n ,将矩阵 a 以步长 n 跳选数值写入 fid 指向的打开的文件,例如,a=1,2,3,4,5,6,7,8,9 ;skip=2; 则输入 _,_,3,_,_,6,_,_,9。这对非连续数据场,定长插入数据极有意义。*3)“fread”以二进制形式,从文件读出数据。语法 1:a,count=fread(fid,size,precision)语法 2:a,count=fread(fid,size,precision,skip)size: 不指定 :到尾返回读。N : 读出 N 个数据,构成列向量。inf : 读出 fid 指向的打开的文件的全部数据
8、。m,N : 读出 N 个数据,构成列向量,填入 M*N 矩阵precision(精度)precision(精度)规定了以浮点数、整型数、字符读出时字节数。matlab 的 precision(精度)的表达式与c 语言、fortran 语言、是一致的。不规定 precision(精度),则字符默认为: ucher、则数值默认为:双精度 。以下 precision(精度)将保证读出具有一致的体积。MATLAB C or Fortran Descriphon(精度)char char*l 8 字节数,字符型uchar unsigned char 8 字节数schar signed char 8 字
9、节数,字符型int8 integer*1 8 字节数,整型数intl6 integer*2 16 字节数,整型数.int32 integer*4 32 字节数,整型数.int64 integer*8 64 字节数,整型数uint8 integer*l 8 字节数uintl6 integer*2 16 字节数uint32 integer*4 32 字节数uint64 integer*8 64 字节数float32 real*4 浮点数, 32 字节数float64 real*8 浮点数, 32 字节数以下 precision(精度)将不保证读出具有一致的体积。MATLAB C or Fortra
10、n Descriphon(精度)short short 16 字节数,整型数int int 32 字节数,整型数long long 32 (64) 字节数,整型数uShort Unsigned short 16 字节数uint Unsigned int 32 字节数ulong unsigned long 32 (64) 字节数float float 浮点数, 32 字节数double double 浮点数, 64 字节数以下 precision(精度)规定读出指定的体积 n。bitN N 字节数,整型数 10:成功,n 是读出数据个数。fid :文件号size :a 的数据的格式N : 列向量
11、 inf : 读出文件全部数据m,N : 读出数据以 M*N 的格式放入变量名 a 内format :读出数据的格式format 是字符形式,与 C 语言基本相同。字符形式中有“%”与字符集(d,i,o,u,x,e,f,g,s,c,)搭配构成。如: %s:单字符读%c:读 space 字符例:s=fscanf(fid,%s) 返回一个字符。a=fscanf(fid,%5d) 返回一个五位十进制整数。*5)关闭文件 fclose语法 1:fclose(fid)语法 2:fclose(all)*6)向文件写数据 printf语法 1:count=printf(fid,format,a,b,s,)例
12、:x=0:0.1:1;y=x;exp(x);fid=fopen(exp.txt,w)fprintf(fid,%6.2 %12.8fn,y);计算结果:0.0 1.000000000.1 1.105170921.00 2.71828183*8) 指针放到文件头:frewind语法 1:frewind(fid), hansi-font-family: Times New Roman; mso-ascii-font-family: Times New Roman“以下precision(精度)规定读出指定的体积 n。bitN N 字节数,整型数 10:成功,n 是读出数据个数。fid :文件号siz
13、e :a 的数据的格式N : 列向量 inf : 读出文件全部数据m,N : 读出数据以 M*N 的格式放入变量名 a 内format :读出数据的格式format 是字符形式,与 C 语言基本相同。字符形式中有“%”与字符集(d,i,o,u,x,e,f,g,s,c,)搭配构成。如: %s:单字符读%c:读 space 字符例:s=fscanf(fid,%s) 返回一个字符。a=fscanf(fid,%5d) 返回一个五位十进制整数。*5)关闭文件 fclose语法 1:fclose(fid)语法 2:fclose(all)*6)向文件写数据 printf语法 1:count=printf(f
14、id,format,a,b,s,)例:x=0:0.1:1;y=x;exp(x);fid=fopen(exp.txt,w)fprintf(fid,%6.2 %12.8fn,y);计算结果:0.0 1.000000000.1 1.105170921.00 2.71828183 如何编写 MATLAB 程序才能实现对.TXT 文档的读写(转载) 这网站真贱 收录于 2010-07-23 阅读数:查看 收藏数:9 公众公开 原文来源 tags: MATLAB 修改以文找文推荐给好友 如何对文章标记,添加批注?如何编写 MATLAB程序才能实现对 .TXT文档的读写(2010-02-27 19:16:2
15、1) 标签: matlab文件读写杂谈分类:转载如何编写 MATLAB 程序才能实现对 .TXT 文档的读写呢? matlab 文件操作文件操作是一种重要的输入输出方式,即从数据文件读取数据或将结果写入数据文件。MATLAB 提供了一系列低层输入输出函数,专门用于文件操作。1、文件的打开与关闭1)打开文件在读写文件之前,必须先用 fopen 函数打开或创建文件,并指定对该文件进行的操作方式。fopen 函数的调用格式为:fid=fopen(文件名,打开方式 )说明:其中 fid 用于存储文件句柄值,如果返回的句柄值大于 0,则说明文件打开成功。文件名用字符串形式,表示待打开的数据文件。常见的打
16、开方式如下:? r:只读方式打开文件(默认的方式),该文件必须已存在。? r+:读写方式打开文件,打开后先读后写。该文件必须已存在。? w:打开后写入数据。该文件已存在则更新;不存在则创建。? w+:读写方式打开文件。先读后写。该文件已存在则更新;不存在则创建。? a:在打开的文件末端添加数据。文件不存在则创建。? a+:打开文件后,先读入数据再添加数据。文件不存在则创建。另外,在这些字符串后添加一个“t”,如rt 或wt+ ,则将该文件以文本方式打开;如果添加的是“b”,则以二进制格式打开,这也是 fopen 函数默认的打开方式。2)关闭文件文件在进行完读、写等操作后,应及时关闭,以免数据丢
17、失。关闭文件用fclose 函数,调用格式为:stafclose(fid)说明:该函数关闭 fid 所表示的文件。sta 表示关闭文件操作的返回代码,若关闭成功,返回 0,否则返回-1。如果要关闭所有已打开的文件用 fclose(all)。2、二进制文件的读写操作1)写二进制文件fwrite 函数按照指定的数据精度将矩阵中的元素写入到文件中。其调用格式为:COUNTfwrite(fid ,A ,precision)说明:其中 COUNT 返回所写的数据元素个数(可缺省),fid 为文件句柄,A 用来存放写入文件的数据,precision 代表数据精度,常用的数据精度有:char、uchar、i
18、nt 、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)ans = 0 %表示关闭成功2)读二进制文件fread 函数可以读取二进制文件的数据,并将数据存入矩阵。其调用格式为:A,COUNT=fread(fid,size,precision)说明
19、:其中 A 是用于存放读取数据的矩阵、 COUNT 是返回所读取的数据元素个数、fid 为文件句柄、size 为可选项,若不选用则读取整个文件内容;若选用则它的值可以是下列值:N (读取 N 个元素到一个列向量)、 inf(读取整个文件)、M,N(读数据到 MN 的矩阵中,数据按列存放)。precision 用于控制所写数据的精度,其形式与 fwrite 函数相同。3、文本文件的读写操作1)读文本文件fscanf 函数可以读取文本文件的内容,并按指定格式存入矩阵。其调用格式为:A,COUNT=fscanf(fid ,format,size)说明:其中 A 用来存放读取的数据, COUNT 返回
20、所读取的数据元素个数,fid为文件句柄,format 用来控制读取的数据格式,由%加上格式符组成,常见的格式符有:d(整型)、f (浮点型)、s(字符串型)、c (字符型)等,在%与格式符之间还可以插入附加格式说明符,如数据宽度说明等。size 为可选项,决定矩阵 A 中数据的排列形式,它可以取下列值: N(读取 N 个元素到一个列向量)、inf(读取整个文件)、M,N(读数据到 MN 的矩阵中,数据按列存放)。2)写文本文件fprintf 函数可以将数据按指定格式写入到文本文件中。其调用格式为:fprintf( fid,format ,A)说明:fid 为文件句柄,指定要写入数据的文件,fo
21、rmat 是用来控制所写数据格式的格式符,与 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 =stringmatlab 读 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)我个人觉得用第一种方式较好。因为有些时候,特别是 fx.txt 的一行种有多个数据时用 load就比较麻烦了。