如何从存储在主文件夹中的5个不同文件夹中读取多个.mat文件

时间:2016-08-26 09:59:19

标签: matlab matrix vector data-analysis

我有一个包含5个不同文件夹的文件夹(每个文件夹有10个return redirect()->to('url'); 文件),我想在MATLAB中加载或读取所有文件。你能给我一些提示或一些有用的信息我该怎么做?

每个.mat文件包含30000x6矩阵,我还需要存储每个文件中的一个列向量,并将其保存在一个单独的矩阵中。 我需要这个PCA矩阵。

感谢任何帮助。

1 个答案:

答案 0 :(得分:-1)

首先,您需要发现主文件夹中的文件夹(假设它名为main_folder)。您可以使用dir命令执行此操作,该命令返回具有以下几个有趣功能的结构:

dirContents = dir('main_folder')

输出

dirContents = 

9x1 struct array with fields:

    name
    date
    bytes
    isdir
    datenum

循环搜索结果,查找isdir字段设置为1的条目(请注意...)。如果您还想在嵌套文件夹中搜索,请以递归方式应用此过程。

对于每个条目,获取具有所需扩展名的文件。您可以再次使用通配符dir

% Loop over the directories inside 'main_folder'
for indDir = 1:numel(dirContents)
    thisEntry = dirContents{indDir};
    if thisEntry.isdir
        % If entry is a directory, search .mat files
        matFilesInFolder = dir(['main_folder/',thisEntry.name,'/*.mat']);
        % For each found .mat file, load contents
        for indMat = 1:numel(matFilesInFolder)
            thisMat = matFilesInFolder{indMat};
            matContents = load(['main_folder/',thisEntry.name,'/',thisMat.name]);

            % HERE DO WHATEVER YOU WANT WITH THE CONTENTS OF THE FILE
        end
    end
end

这是困难的部分。代码尚未经过测试,可能需要修复。

我不确定您需要对数据做什么。检查内容的加载方式并根据需要进行处理。