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

问题描述:

假设我有一个.mat文件,它带有几个相同结构的实例,每个实例都有一个不同的变量名。从一个.mat文件加载一个变量到一个不同名称的变量

我想处理文件中找到的每个实例(我发现使用whos('-file' ...)。我希望load可以让我指定一个变量的目的地名称,这样我就不必担心碰撞(因此我不必编写自修改代码la eval)。

蛮力的方式来做到这一点似乎是创建一个辅助函数,使用变量与希望不与.MAT内容相冲突的名字,确实是这样的:

  1. 是否在whos该文件获取包含的名称。
  2. 迭代加载每个包含的结构。
  3. 使用eval将加载的结构分配到单元数组(其中一列数组包含.mat文件的结构名称以及一个与.mat文件中每个结构的实际内容对应的列)。

有没有更好的方法来完成同样的事情?

当然你可以!只需使用带有输出参数的load即可。

x = 1; 
save foo; 

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

漂亮的单元阵列。我反复查看'load'手册页,想知道''结构数组'应该是什么样的返回值?“现在我明白了! – jhfrontz 2012-02-02 04:33:22

可以load在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