Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Matlab对文件夹的层次遍历和深度遍历

最近做一个项目,由于数据分别放在不同的文件夹中,对大量数据文件“打开->复制->粘贴”,觉得很费事,于是就写了对基于Matlab的文件夹遍历。文价夹遍历有两种方式,即层次遍历和深度遍历。个人比较倾向用层次遍历的方法,因为深度遍历要用到递归,当文件目录比较深的时候可能会出现栈溢出的现象(当然这只是个极端的情况),而且必须要做成一个函数,若需要记录每个文件的路径,就比较麻烦!而层次遍历思路相对简单,易于理解。废话不多说,直接贴上代码:1、基于matlab的深度优先遍历:function RenameFile( strPath )
    path=strPath;
    Files = dir(fullfile( path,"*.*"));
    LengthFiles = length(Files);
    for iCount = 1:LengthFiles    % 判断是否是文件夹   
        name = Files(iCount).name;   
        if name=="."       
            continue;   
        end
        s = [path  name "/"];        %遍历文件 
        Folders = dir(fullfile( s,"*.*"));   
        Length= length(Folders);       
        for iCount = 1:Length;         
            if strcmp(Folders(iCount).name, ".") | ...
             strcmp(Folders(iCount).name, "..")
                continue;
            end
            %对文件进行操作
            Folders(iCount).name
        end
    end
end2、基于Matlab的层次遍历(广度优先遍历): %定义两数组,分别保存文件和路径
mFiles = cell(0,0);
mPath  = cell(0,0);mPath{1}="./";
[r,c] = size(mPath);
while c ~= 0
    strPath = mPath{1};
    Files = dir(fullfile( strPath,"*.*"));
    LengthFiles = length(Files);
    if LengthFiles == 0
        break;
    end
    mPath(1)=[];
    iCount = 1;
    while LengthFiles>0
        if Files(iCount).isdir==1
            if Files(iCount).name ~="."
                filePath = [strPath  Files(iCount).name "/"];
                [r,c] = size(mPath);
                mPath{c+1}= filePath;
            end
        else
            filePath = [strPath  Files(iCount).name];
            [row,col] = size(mFiles);
            mFiles{col+1}=filePath;
        end
       
        LengthFiles = LengthFiles-1;
        iCount = iCount+1;
    end
    [r,c] = size(mPath);
endUbuntu Server上安装Matlab http://www.linuxidc.com/Linux/2014-09/106242.htmMatlab与C/C++联合编程之从Matlab调用C/C++代码 http://www.linuxidc.com/Linux/2012-08/68148.htm二分类SVM方法Matlab实现 http://www.linuxidc.com/Linux/2013-05/84050.htmMatlab中的取整函数fix, floor, ceil与round http://www.linuxidc.com/Linux/2013-10/91161.htmMatlab编译cuda的.cu文件 http://www.linuxidc.com/Linux/2014-04/100675.htmLinux Matlab服务器进一步改造成Application Server(应用程序服务器) http://www.linuxidc.com/Linux/2014-09/106340.htm本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-02/113171.htm