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

    一、 matlab对路径的操作
    1、 filesep
    用于返回当前平台的目录分隔符,Windows是反斜杠(),Linux是斜杠(/)。

     2、 fullfile
    用于将若干字符串连接成一个完整的路径。例如:
    >> f=fullfile('D:','Matlab','example.txt') f=D:Matlabexample.txt (在Windows中,“D:”表示D盘,“D:”表示目录) 

    3、 fileparts
    用于将一个完整的文件名分割成4部分:路径,文件名,扩展名,版本号。例如: >> f=fullfile('D:','Matlab','example.txt'); >>[pathstr,name,ext,versn]=fileparts(f) pathstr=D:Matlab name=example ext=.txt versn=’’


    4、 pathsep
    返回当前平台的路径分隔符。Windows是分号(;),Linux是冒号(:)。


    5、 exist
    可以用于判断目录或者文件是否存在,同时不同的返回值有不同的含义。例如: >> f=fullfile('D:','Matlab','example.txt'); >>exist(f)
    ans=2
    >>exist('D:Matlab') ans =7

     

    6、 which
    可以通过一个函数或脚本名称得到它的完整路径,同时还能处理函数重载的情况,例如: >> which abs(0) C:MATLAB7 oolboxmatlabelfun@doubleabs.bi  % double method >> which abs(single(0)) C:MATLAB7 oolboxmatlabelfun@singleabs.bi  % single method

     

     7、 isdir
    判断一个路径是否代表了一个目录,例如: >> p='D:Matlab';
    >> f=fullfile(p,'example.txt'); >> isp=isdir(p) isp=1
    >> isf=isdir(f) isf=0
    8、 dir
    用于列出一个目录的内容,返回值为结构体数组类型,包含如下部分:name:文件或目录的名称;date:修改日期;bytes:文件大小;isdir:是否是目录。例如:
    >> p='D:Matlab'; >>files=dir(p) files = 
    8x1 struct array with fields:     name     date     bytes
        isdir

     9、 cd
    用于切换当前工作目录。例如:
    >>cd('c:/toolbox/matlab/demos') %切换当前工作目录到demos >>cd .. %切换当前工作目录到matlab 

    10、 pwd
    用于当前工作目录的路径。例如: >> pwd ans =C:MATLAB7work 

    11、 path
    用于对搜索路径的操作。例如:
    <<path %查询当前所有的搜索路径(MATLABPATH) <<p=path  %把当前的搜索路径存在字符串变量p中 <<path(‘newpath’)  %将当前搜索路径设置为newpath <<path(path,’newpath’) %向路径添加一个新目录newpath <<path(’newpath’, path) %向当前搜索路径预加一个新目录nespath
    12、 addpath和rmpath
    用于对matlab搜索路径的添加和删除。例如:
    <<addpath(‘directory’) %将完整路径directory加入到当前搜索路径的最顶端 <<rmpath
    13、 what
    用于显示出某目录下存在哪些matlab文件;若输入完整路径,可列出指定目录下的文件。例如:
    <<what
    <<what dirname <<what(‘dirname’)
    其中dirname是要查找的路径的名字,路径在matlab的搜索路径内时,没有必要输入全名,只输入最后或最后两级就够了。 

    14、 path2rc
    保存当前matlab的搜索路径到pathdef.m文件中。


    二、 matlab对文件的操作
    1、 fopen
    打开文件或者得到文件打开的信息。例如: >> f=fullfile('D:','Matlab','example.txt');
    >>fid=fopen(f); %打开文件,fid=-1表示打开文件失败;fid=1表示输出stdout;fid=2
    表示错误信息文件;fid=其他正数表示文件打开成功,并返回文件编号。(fid=1,2不需打开)
    >> fid = fopen(f,’r’); %以读(r)的方式打开文件;

    打开方式有:

                      r, 

                     w,

                     a,

                    r+,

                    w+,

                    a+,

                     A, 

                    W
    >>[fid,message] = fopen(filename, mode, machineformat) 

    2、 fclose
    关闭一个或者多个文件。例如: >>fclose(fid)
    >>fclose(‘all’)

     3、 load
    可用于读数值型文件,并且无须打开文件,但是要求文件中的内容所有行的列数相同。例如:
    >> f=fullfile('D:','Matlab','example.txt'); >>A=load(f)  %返回以f为路径的文件的内容

     4、 fread
    用于读取文件中的内容,需要和fopen, fclose配合使用,返回的是ASCII码,可以指定返回字节数和返回的格式。例如:
    >> f=fullfile('D:','Matlab','example.txt'); >> fid = fopen(f, 'r'); >>a=fread(fid); %读取文件全部内容,返回的是每个字节的ASCII码
    >>b=fread(fid,5); %读取文件中的前5个字符返回的是这5个字节的ASCII码 >>c=fread(fid,5, 'uint8=>char'); %读取文件中前5个字符并以字符char格式返回 >>d=fread(fid,’*char’);  %读取文件中全部内容并以字符串的格式返回 (a,b,c,d每句是一个单独语句与其他语句无关)
    >>e1=fread(fid,5,’*char’); %读取文件中前5个字符并以字符串的格式返回
    >>e2=fread(fid,8,’*char’); %读取fid指向位置开始后面的8个字符并以字符串的格式返回(e2与e1一起使用时)
    >>fclose(fid)
    5、 fscanf
    用于读取文件中指定格式的内容,需要和fopen, fclose配合使用,可以指定读取的字节数,返回的内容存放到一个一维数组中。例如:
    >> f=fullfile('D:','Matlab','example.txt'); >> fid = fopen(f, 'r');
    >>a=fscanf(fid,’%d’); %读取文件中的所有数字,返回到数组a中
    >>[a,count]=fscanf(fid,’%d’,5); %读取文件中fid指向位置开始后面的5个数字,返回到数组a中,count返回a的大小,count<=5(返回的数字个数可能小于要求读取的个数)
    >>fclose(fid)
    6、 fgetl
    用于读取文件中一行内容,不包括换行符,需要和fopen, fclose配合使用。例如: >> f=fullfile('D:','Matlab','example.txt'); >> fid = fopen(f, 'r'); >>tline=fgetl(fid); 
    %从文件中读取fid指向的一行内容
    >>fclose(fid)

     7、 fgets
    用于读取文件中一行内容,包括换行符,需要和fopen,fclose配合使用。(只能用于文本
    文件)例如:
    >> f=fullfile('D:','Matlab','example.txt'); >> fid = fopen(f, 'r'); >>tline=fgets(fid);  %返回文件标识符指向的一行 >>tline=fgets(fid,nchar);  %返回文件标识符指向的一行的最多nchar个任何字符 >>fclose(fid)
    8、 fwrite
    用于将二进制数据写入文件中,需要和fopen,fclose配合使用。例如: >> f=fullfile('D:','Matlab','example.txt'); >> fid = fopen(f, 'wb');
    >>fwrite(fid,magic(5),'integer*4');  %创建一个二进制文件,由25个4位integer类型
    的元素组成的5*5的矩阵
    >>fclose(fid)

     9、 fprintf
    用于将指定格式数据写入到文件中,需要和fopen,fclose配合使用。例如: >>x = 0:.1:1; %从0到1以0.1为单位建立一个矩阵
    >>y = [x; exp(x)];
    >> f=fullfile('D:','Matlab','example.txt'); >>fid = fopen(f,'w');
    >>fprintf(fid,'%6.2f .8f ',y);  %将矩阵y写入文件中,规定了写入格式 >>fclose(fid) 

    10、
    fseek

    用于对文件指针位置的设定,需要和fopen,fclose配合使用。例如: >> f=fullfile('D:','Matlab','example.txt'); >>fid = fopen(f,'r'); >>fseek(fid, 19, 'bof'); >>A = fscanf(fid,’%d’,5);
    >>fclose(fid) 

    11、 ftell
    用于得到文件指针位置,需要和fopen,fclose配合使用。例如: >> f=fullfile('D:','Matlab','example.txt'); >>fid = fopen(f,'r'); >>fseek(fid,0,’eof’); >>position=ftell(fid); >>fclose(fid)
    12、 ferror
    用于查询关于文件错误的输入或者输出,需要和fopen,fclose配合使用。例如: >> f=fullfile('D:','Matlab','example.txt'); >>fid = fopen(f,'r');
    >>message1=ferror(fid);  %返回错误信息
    >>message2=ferror(fid,’clear’)
    %返回错误信息并清空
    >>fclose(fid) 

    13、 feof
    用于判断是不是文件末尾,需要和fopen,fclose配合使用。例如: >> f=fullfile('D:','Matlab','example.txt'); >>fid = fopen(f,'r'); >>while ~feof(fid) >>tline=fgetl(fid); >>printf(tline); >>end

    >>fclose(fid) 三、 。。 四、

    原文链接

     

     

    matlab字符串拼接

    http://blog.csdn.net/u013457167/article/details/48805217

     

    matlab遍历文件夹

    http://blog.csdn.net/u012675539/article/details/43671663

     

    以前从未遇到过用MATLAB批处理文件的情况,此次项目需要批量将二进制数据文件导入matlab进行svm分类,现将matlab遍历子文件夹及其文件的方法记录下来。

     


     

    文件目录结构

     

    /maindir
        |-- subdir1
            |-- datafile1.dat
            |-- datafile2.dat
        |-- subdir2
            |-- datafiel3.dat
            |-- datafiel4.dat
        |-- subdir3
            |-- datafile5.dat
            |-- datafile6.dat
    

     

    主文件夹maindir下含有三个子文件夹,子文件夹分别包含两个二进制数据文件

     

    函数dir

     

    可以使用函数dir,D = DIR('directory_name')返回一个结构数组,包含了文件夹directory_name下的子文件夹和子文件的一些信息,第1个成员是文件名,第4个成员表示是否为文件夹。

     

    要注意的是第1个数组元素和第2个数组元素分别是’.’和’..’,表示当前目录和上层目录。

     

    代码实现

     

    maindir = 'D:MATLABproject';
    subdir  = dir( maindir );
    
    for i = 1 : length( subdir )
        if( isequal( subdir( i ).name, '.' )||...
            isequal( subdir( i ).name, '..')||...
            ~subdir( i ).isdir)               % 如果不是目录则跳过
            continue;
        end
        subdirpath = fullfile( maindir, subdir( i ).name, '*.dat' );
        dat = dir( subdirpath )               % 子文件夹下找后缀为dat的文件
    
        for j = 1 : length( dat )
            datpath = fullfile( maindir, subdir( i ).name, dat( j ).name);
            fid = fopen( datpath );
            % 此处添加你的对文件读写操作 %
        end
    end

     

     

    函数uigetdir

     

    由于前面maindir需要指定路径,可能不是太方便。

     

    使用uigetdir可以方便的通过对话框选择文件夹,返回值为文件夹路径名。代码如下:

     

    maindir = uigetdir( '选择一个文件夹' );
    

     


     

    上面的例子比较简单,只涉及到两层目录以及指定格式的文件。

     

  • 相关阅读:
    Asp.net 动态添加Meta标签
    【转】在SharePoint Server 2010中更改“我的网站”
    SPQuery DateTime 类型查询
    Asp.net Web Application 打开 SharePoint 2010 Site 错误 The Web application at could not be found
    How To Create SharePoint 2010 Site Collection In Its Own DB
    C# 文件打印
    面试题 java集合
    《深入理解Java虚拟机》(六)堆内存使用分析,垃圾收集器 GC 日志解读
    《深入理解Java虚拟机》(五)JVM调优
    《深入理解Java虚拟机》(四)虚拟机性能监控与故障处理工具
  • 原文地址:https://www.cnblogs.com/ya-cpp/p/8099021.html
Copyright © 2011-2022 走看看