matlab 文件夹操作

来源:互联网 发布:cs软件怎么用 编辑:程序博客网 时间:2024/04/29 00:36

今天处理实验室拍图的数据, 因为主体的流程是用matlab编写的, 拍的图片文件格式也相对比较固定, 就需要我们写一个接口, 将文件中的数据提取出来, 转化为一个主体程序接受的数据格式, 这就涉及到了matlab 的文件夹操作了。
因为好久没写这样的代码了, 有些生疏, 不过还好比较简单, 这里做一个比较浅显的小结。
主要用到了 isdir, dir, strncmp, load 这么几个函数, 用matlab 的帮助doc 指令可以很容易得到他们的使用方法。

下面给出, 我们读取文件夹下二级目录内特定文件内数据的方法

%% 给定图片文件夹的路径, 获取每个子文件夹中的 Rt.txt 文件的内容, 并加入矩阵中% @params :             path 输入文件夹路径% @return :             rtl left 文件夹中的Rt.txt 内容的集合体%                        rtr right 文件夹中Rt.txt 内容的集合体% @description:         文件夹结构是分为 left, right 两个子文件夹, 子文件夹中分别有1~n的子文件夹%                      在这些二级文件夹下有一个 Rt.txt 文件, 这个是我们关注的对象。% @author :             zhyh2010% @date   :             20160320% @version:              version 1.0%function [rtl, rtr] = getRTALL(path)    tf = isdir(path);    assert(tf == true, [path, ' 输入路径必须是一个合法的文件夹路径']);    rtl = getRT([path, '\\left']);    rtr = getRT([path, '\\right']);    %     errl = getErr([path, '\\left'], 0.1);%     errr = getErr([path, '\\right'], 0.1);end% 获取left / right 文件夹下的 RTALL 的集合数据function [rt] = getRT(path)    tf = isdir(path);    assert(tf == true, [path, ' 输入路径必须是一个合法的文件夹路径']);    listing = dir(path);    rt = [];    for ii = 1 : length(listing)        % 如果遍历的对象不是文件夹, 或者 是 . / .. 不处理        if (listing(ii).isdir == 0 || strncmp(listing(ii).name, '.', 1) == 1)            continue;        end        subpath = [path, '\\', listing(ii).name, '\\Rt.txt'];        rt_tmp = load(subpath);        rt = [rt; rt_tmp];    endend% 获取left / right 文件夹下的 error.txt 的 超过 error_level 的 集合数据function [err_set] = getErr(path, err_level)    tf = isdir(path);    assert(tf == true, [path, ' 输入路径必须是一个合法的文件夹路径']);    listing = dir(path);    err_set = [];    for ii = 1 : length(listing)        % 如果遍历的对象不是文件夹, 或者 是 . / .. 不处理        if (listing(ii).isdir == 0 || strncmp(listing(ii).name, '.', 1) == 1)            continue;        end        % 取出最后一行的 error 统计数据, 如果超过 error_level 就将他取出来        subpath = [path, '\\', listing(ii).name, '\\error.txt'];        err_set_tmp = load(subpath);        % 文件中的最后一行数据是 平均值        data.data = err_set_tmp(end);        data.name = listing(ii).name;        if data.data >= err_level            err_set = [err_set; data];        end    endend
0 0