我曾经使用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。
该代码在 Octave 音程中不起作用,可能是因为“fullfile”?。无论如何,通过以下代码,我得到了名称为 C__folder_A、C__folder_B、C__folder_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 开始,因为 files(1).name = 。和文件(2).name = ..
编辑: 我刚刚找到了解决方案。它并不优雅,但很有效。 我只是用“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
关于matlab - Octave:加载特定目录中的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24616676/