如何将来自不同.mat文件的变量存储到单独的矩阵中

时间:2013-03-14 18:05:23

标签: matlab

我有一个包含一堆.mat文件的文件夹,每个文件都有许多不同的变量。我想将(a)单个变量存储到单独的矩阵中。我创建了一个for循环,我按名称加载了每个文件,但这只给了我最后一个.mat文件。我是Matlab的新手,我假设有一个非常简单的方法可以解决这个问题,但我没有找到任何运气。

谢谢!

编辑:好的,所以我有一大堆.mat文件,每个文件都有一个变量X.我想将所有X存储到与每个单独的.mat文件对应的单独矩阵中。

2 个答案:

答案 0 :(得分:1)

Load(filename) on on own会将变量加载到工作空间中,但正如您所注意到的,每次加载具有相同名称的新变量时,这些都会被写入。 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将包含每个文件的矩阵。

答案 1 :(得分:0)

将文件加载到变量

ld {ii} = load(filename {ii});

现在ld{ii}是一个结构,在文件filename{ii}

中每个变量都有一个字段