假设我有一个.mat文件,其中有几个相同结构的实例,每个实例都有不同的变量名。
我想处理在文件中找到的每个实例(使用whos('-file' ...
找到)。我希望load
能让我指定变量的目标名称,这样我就不必担心冲突(也不必像eval
那样编写自修改代码)。
实现这一点的暴力方法似乎是创建一个辅助函数,该函数使用名称希望与.mat内容不冲突的变量,执行以下操作:
- 对文件执行
whos
以获取包含的名称 - 反复加载每个包含的结构
- 使用
eval
将加载的结构分配到(例如)单元数组中(其中数组的一列包含.mat文件的结构名称,以及对应的列,其中包含.mat中每个结构的实际内容)
没有比这更优雅的方式来完成同样的事情了吗?
当然可以!只需将load
与输出参数一起使用即可。
x = 1;
save foo;
ls = load('foo.mat');
ls.x
您可以将MAT文件中的数据load
转换为结构
ws = load('matlab.mat');
结构CCD_ 8的字段将是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