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( '选择一个文件夹' );
    

     


     

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

     

  • 相关阅读:
    Linux内核文档:包含 kernel-doc 注释
    Linux内核文档:如何写符合 kernel-doc 规范的注释
    [记录点滴] 使用工具和命令对redis数据进行备份恢复
    聊聊CMDB的前世今生
    我是如何走上运维岗位的?谈谈新人入职运维发展的注意事项
    如何从生命周期的视角看待应用运维体系建设?
    标准化体系建设(下):如何建立基础架构标准化及服务化体系?
    标准化体系建设(上):如何建立应用标准化体系和模型?
    微服务架构时代,运维体系建设为什么要以“应用”为核心?
    lsattr命令
  • 原文地址:https://www.cnblogs.com/ya-cpp/p/8099021.html
Copyright © 2011-2022 走看看