我有一个文件夹,里面有一堆 .mat 文件,每个文件都有很多不同的变量。我想将(一个)单个变量存储到单独的矩阵中。我做了一个 for 循环,用它按名称加载每个文件,但这只给了我最后一个 .mat 文件。我是 Matlab 的新手,我假设有一个非常简单的方法可以解决这个问题,但我没有找到任何东西。
谢谢!
编辑:好的,所以我有一大堆 .mat 文件,每个文件都有一个变量 X。我想将所有 X 存储到与每个单独的 .mat 文件相对应的单独矩阵中。
我有一个文件夹,里面有一堆 .mat 文件,每个文件都有很多不同的变量。我想将(一个)单个变量存储到单独的矩阵中。我做了一个 for 循环,用它按名称加载每个文件,但这只给了我最后一个 .mat 文件。我是 Matlab 的新手,我假设有一个非常简单的方法可以解决这个问题,但我没有找到任何东西。
谢谢!
编辑:好的,所以我有一大堆 .mat 文件,每个文件都有一个变量 X。我想将所有 X 存储到与每个单独的 .mat 文件相对应的单独矩阵中。
Load(filename)
它自己会将变量加载到工作空间中,但是,正如您所注意到的,每次您加载具有相同名称的新变量时,这些变量都会被覆盖。 S = load(filename)
将变量加载到结构数组中。然后,您可以按名称访问每个变量并将其保存在数组中。例如:
% create two files containing variables with the same names
x = 1;
y = 2;
save("test1.mat")
x = 10;
y = 20;
save("test2.mat")
% load the saved files and store the variables x and y in vectors
for i = 1:2
temp = load(["test", num2str(i), ".mat"]);
xVec(i) = temp.x;
yVec(i) = temp.y;
end
作为对您的编辑的响应,您可以将每个文件中的所有变量保存在一个矩阵中,如下所示:
% load the saved files and store the contents of each file in a matrix
dataArray = {};
for i = 1:2
temp = load(["test", num2str(i), ".mat"]);
dataArray{i} = [temp.x, temp.y];
end
元胞数组dataArray
将包含每个文件的矩阵。
将文件加载到变量中
ld{ii} = 加载(文件名{ii} );
现在ld{ii}
是一个结构,文件中的每个变量都有一个字段filename{ii}