Matlab 倍频程:从特定目录加载所有文件
我曾经使用Matlab,并使用以下代码将目录“C:\folder\”中的所有txt文件加载到Matlab中:Matlab 倍频程:从特定目录加载所有文件,matlab,matrix,load,octave,dir,Matlab,Matrix,Load,Octave,Dir,我曾经使用Matlab,并使用以下代码将目录“C:\folder\”中的所有txt文件加载到Matlab中: myFolder = 'C:\folder\'; filepattern = fullfile(myFolder, '*.txt'); files = dir(filepattern); for i=1:length(files) eval(['load ' myFolder,files(i).name ' -ascii']); end 如果C:\folder\包含A.txt、B.tx
myFolder = 'C:\folder\';
filepattern = fullfile(myFolder, '*.txt');
files = dir(filepattern);
for i=1:length(files)
eval(['load ' myFolder,files(i).name ' -ascii']);
end
如果C:\folder\包含A.txt、B.txt、C.txt,那么工作区中将包含矩阵A、B和C
代码不能在八度音阶下工作,可能是因为“fullfile”?。不管怎样,通过下面的代码,我得到了名为C\u folder\u A、C\u folder\u B、C\u folder\u C的矩阵。但是,我需要名为A、B、C的矩阵
myFolder = 'C:\folder\';
files = dir(myFolder);
for i=3:length(files)
eval(['load ' myFolder,files(i).name ' -ascii']);
end
你能帮我吗?
谢谢
马丁
PS:循环以3开头,因为文件(1).name=。和文件(2)。名称=
编辑:
我刚刚找到了一个解决办法。它不优雅,但很管用。
我只需添加文件所在的路径,其中包含“addpath”,然后我就不必在循环中给出目录的全名
myFolder = 'C:\folder\';
addpath(myFolder)
files = dir(myFolder);
for i=3:length(files)
eval(['load ' files(i).name ' -ascii']);
end
如果将文件加载到动态生成名称的变量,并且应该将其加载到单元格数组中,则通常是糟糕的设计,但这应该可以工作:
files = glob('C:\folder\*.txt')
for i=1:numel(files)
[~, name] = fileparts (files{i});
eval(sprintf('%s = load("%s", "-ascii");', name, files{i}));
endfor
函数
scanFiles
递归地搜索当前目录(initialPath
)和子目录中扩展名为的文件名。参数fileHandler
是一个函数,可用于处理填充的文件结构(即读取文本、加载图像等)
来源
函数扫描文件(初始路径、扩展名、文件处理程序)
持久性总数=0;
持续深度=0;深度++;
initialDir=dir(initialPath);
printf('正在扫描目录%s…\n',初始路径);
对于idx=1:长度(initialDir)
curDir=initialDir(idx);
curPath=strcat(curDir.folder,'\',curDir.name);
如果regexp(curDir.name,“(?!(\\.\.\.\?)).*)*curDir.isdir
扫描文件(curPath、扩展名、fileHandler);
elseif regexp(curDir.name,cstrcat(\\.(?i:)(?:”,extensions,“)$”)
总计++;
file=struct(“name”,curDir.name,
“路径”,curPath,
“父”,regexp(curDir.folder,[^\\/]*$,'match'),
“字节”,curDir.bytes);
文件处理程序(文件);
恩迪夫
结束
如果!(-深度)
printf('文件总数:%d\n',总数);
总数=0;
恩迪夫
端功能
用法
#txt
#textFileHandlerFunc=@(文件)fprintf('%s',fileread(file.path));
#扫描文件(“E:\\Examples\\project\\”、“txt”、textFileHandlerFunc);
#图像
#imageFileHandlerFunc=@(file)imread(file.path);
#扫描文件(“E:\\Examples\\project\\datasets\\”、“jpg | png”、imageFileHandlerFunc);
#列出文件
fileHandlerFunc=@(文件)fprintf('路径=%s\n名称=%s\n大小=%d字节\n租金=%s\n\n',
file.path、file.name、file.bytes、file.parent);
扫描文件(“E:\\Examples\\project\\”、“txt”、fileHandlerFunc);