我有一个matlab函数,它将通过返回路径来查找文件。这正是我需要的目的。问题是代码是由我编写的。所以我不太明白这个函数是如何工作的,特别是我不理解的输入。
我希望你能帮我理解这个功能。 最好的问候!
以下是代码:
function B = getAllPaths(basepath, name)
temp=genpath(basepath);
A=regexp(temp,';','split');
j=1;
for i=1:length(A)-1
pfad=cell2mat(A(i));
if(exist([pfad name],'file'))
B(j)=cellstr(pfad);
j=j+1;
end
end
clear A i name pfad temp
答案 0 :(得分:0)
我会将该功能写为
%// Get all child directories of 'basepath' that contain a file named 'name'
function B = getAllPaths(basepath, name)
A = regexp(genpath(basepath), ';', 'split');
B = A(cellfun(@(x) exist([x name],'file') ~= 0, A));
end
或
%// Get all child directories of 'basepath' that contain a file named 'name'
function B = getAllPaths(basepath, name)
if ispc
[OK,dirs] = system(['cd "' basepath '" && dir /s /b "' name '"']);
elseif isunix
[OK,dirs] = system(['find "' basepath '" -type f -name "' name '"']);
end
if ~OK
B = cellfun(@fileparts, cellstr(b), 'UniformOutput', false);
else
B = {};
end
end
MATLAB是互动的!所以与它互动吧!使用任何典型的basepath
和name
并在命令窗口中逐行执行您的函数,每次都显示输出。尝试更改一些命令,看看它如何改变输出。输入help cellfun
和读取,学习,掌握。点击每个see also [...]
底部的help
中的链接,即使您认为自己知道这些链接。输入edit cell2mat
和读取,学习,掌握等等。
理解语言需要练习,而不是某些论坛的答案。
答案 1 :(得分:0)
非常感谢您的建议。我知道学习如何编程需要时间。我还在检查这段代码,但我还没完全理解它。
我遇到了问题: 存在([pfad name],'file')
E.g。当我试图找到“xyz”文件夹“ABC”时,“名称”中的文件必须是什么?我在名字中写了“ABC”,但后来却做了网络工作。
亲切的问候!