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