从.mat文件中加载一个变量到一个不同命名的变量中。

8
假设我有一个.mat文件,其中包含多个相同的结构实例,每个实例都有不同的变量名。
我想要处理在文件中找到的每个实例(使用whos('-file' ...找到)。我希望load可以让我指定变量的目标名称,这样我就不必担心冲突(也不必编写类似于eval的自修改代码)。
粗暴的方法似乎是创建一个辅助函数,使用变量名来执行以下操作(希望这些名称不会与.mat内容发生冲突):
1. 对文件进行whos以获取包含的名称。 2. 迭代地加载每个包含的结构。 3. 使用eval将加载的结构分配到一个单元数组中(其中一个列包含.mat文件的结构名称,另一列包含来自.mat文件的每个结构的实际内容)。
是否有更优雅的方法来完成相同的事情?
2个回答

9
当然可以!只需使用带有输出参数的 load
x = 1;
save foo;

ls = load('foo.mat');
ls.x

不错。我反复查看load手册页面,想知道“结构数组”的返回值应该是什么?现在我知道了! - jhfrontz

5
你可以将MAT文件中的数据载入一个结构体中。
ws = load('matlab.mat');

结构体中的字段ws将成为MAT文件中的变量。您甚至可以拥有结构体的单元数组。
ws{1}=load('savedWorkSpace_1.mat');
ws{2}=load('savedWorkSpace_2.mat');

例子

>> x = 1;
>> save ws_1;
>> x = 2;
>> y = 1;
>> save ws_2
>> clear
>> ws{1} = load('ws_1.mat')
>> ws{2} = load('ws_2.mat')
>> ws{1}.x
    x = 1
>> ws{2}.x
    x = 2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接