matlab - Octave:加载特定目录中的所有文件

标签 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.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/

相关文章:

jquery - 将加载到 div 中的 html 主体作为目标

javascript - 在循环中的每次传递中附加计数的 DOM

jQuery 加载不更新 Internet Explorer 中的文档

matlab - 如何将 PixelList 转换为 mask ?

Matlab 单元测试覆盖率

python - 创建一个已知索引和值的稀疏矩阵

matrix - 卡尔曼增益和误差协方差矩阵应该是对角线的吗?

matlab - Simulink 中的 block 积分器溢出

matlab - 使用matlab将字符串写入excel并控制格式

java - 查找大矩阵中是否存在小矩阵,时间复杂度为 O(n)