Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 倍频程:从特定目录加载所有文件_Matlab_Matrix_Load_Octave_Dir - Fatal编程技术网

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

我曾经使用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.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);