zoukankan      html  css  js  c++  java
  • matlab文件操作

    matlab文件操作

    1、文件的打开与关闭(fopen与fclose)

    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、二进制文件的读写操作(fread与fwrite) 

    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:	est.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、文本文件的读写操作(fscanf与fprintf)

     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是用来存放数据的矩阵。

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

    >> a='string';
    >> fid=fopen('f:char1.txt','w');
    >> fprintf(fid,'%s',a); 
    >> fclose(fid);  
    >>  fid1=fopen('f: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)

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

     数据文件定位

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

    status=fseek(fid, offset, origin)

     其中fid为文件句柄,offset表示位置指针相对移动的字节书,offset的值被如下理解:

    >0   移动位置指针到文件的末尾

    =0   不移动位置指针的位置

    <0   移动位置指针到文件的开始

    origin表示位置指针移动的参照位置,ORIGIN的值被如下理解:

    ‘bof’或-1  文件中的开始位置

    ‘cof’或0   文件的当前位置处

    ‘eof’或1   文件的结尾处

    若定位成功,status返回值0,否则返回值为-1.

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

    position=ftell (fid)

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

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

  • 相关阅读:
    我要好offer之 二叉树大总结
    我要好offer之 字符串相关大总结
    楼层扔鸡蛋问题[转]
    Linux System Programming 学习笔记(十一) 时间
    Linux System Programming 学习笔记(十) 信号
    Linux System Programming 学习笔记(九) 内存管理
    Linux System Programming 学习笔记(八) 文件和目录管理
    Linux System Programming 学习笔记(七) 线程
    Linux System Programming 学习笔记(六) 进程调度
    APUE 学习笔记(十一) 网络IPC:套接字
  • 原文地址:https://www.cnblogs.com/rong86/p/3571936.html
Copyright © 2011-2022 走看看