Matlab中递归函数的返回列表

Matlab中递归函数的返回列表,matlab,recursion,Matlab,Recursion,我在matlab中有一个函数,它带有一个包装器,实际调用递归查找计算机上给定硬盘中所有.mat文件的函数。每次返回时,它都会给出特定文件夹中的文件,因此,由于驱动器上按日期组织的文件夹有数百个,因此会有数百个返回 我正在尝试创建这些文件的一个列表或矩阵,以便其他脚本可以使用此列表来完成它的工作 实际返回是包含文件信息的字段的结构列表。 根据文件夹中的文件数量,返回的文件总是一宽一长 简而言之,我想知道如何获取递归函数的所有返回,并将它们放入一个列表/矩阵中 任何提示都将不胜感激! 多谢各位 fu

我在matlab中有一个函数,它带有一个包装器,实际调用递归查找计算机上给定硬盘中所有.mat文件的函数。每次返回时,它都会给出特定文件夹中的文件,因此,由于驱动器上按日期组织的文件夹有数百个,因此会有数百个返回

我正在尝试创建这些文件的一个列表或矩阵,以便其他脚本可以使用此列表来完成它的工作

实际返回是包含文件信息的字段的结构列表。 根据文件夹中的文件数量,返回的文件总是一宽一长

简而言之,我想知道如何获取递归函数的所有返回,并将它们放入一个列表/矩阵中

任何提示都将不胜感激! 多谢各位

function direc = findDir(currentDir)

dirList = dir(currentDir);
if 2 == length(dirList)
    direc = currentDir
    files = dir([currentDir '*.mat'])


    return 
end

dirList = dirList(3:length(dirList));
fileListA = dir([currentDir '*.mat']);

if 0==isempty(fileListA)
    direc = currentDir
    files = dir([currentDir '*.mat'])


    return 

end

for i=1:length(dirList)
    if dirList(i).isdir == 1

        [currentDir dirList(i).name '\'];

        findDir([currentDir  dirList(i).name '\']);

end

end


end
可以使用,它递归搜索所有文件,并输出包含这些文件信息的结构数组。然后删除文件夹,只保留名称以“.mat”结尾的文件

要检查文件名是否以“.mat”结尾,请使用。请注意,如果字符串名称太短,像nameend-3:end=='.mat'这样的直接比较将失败

currentDir = 'C:\Users\Luis\Desktop'; %// define folder. It will be recursively 
%// searched for .mat files
[~, f] = fileattrib([currentDir '\*']); %// returns a structure with information about
%// all files and folders within currentDir, recursively
fileNames = {f(~[f.directory]).Name}; %// remove folders, and keep only name field
isMatFile = cellfun(@(s) ~isempty(regexp(s, '\.mat$')), fileNames); %// logical index
%// for mat files
matFileNames = fileNames(isMatFile);

变量MatFileName是字符串的单元格数组,其中每个字符串都是.mat文件的全名。

请澄清您的问题,并发布您使用的相关代码。要做到这一点,编辑你的问题谢谢你,我是新手。也许你正在寻找类似的东西。在您的例子中,.mat很容易修改特定类型的文件。