从一个.mat文件加载一个变量到一个不同名称的变量
问题描述:
假设我有一个.mat文件,它带有几个相同结构的实例,每个实例都有一个不同的变量名。从一个.mat文件加载一个变量到一个不同名称的变量
我想处理文件中找到的每个实例(我发现使用whos('-file' ...
)。我希望load
可以让我指定一个变量的目的地名称,这样我就不必担心碰撞(因此我不必编写自修改代码la eval
)。
蛮力的方式来做到这一点似乎是创建一个辅助函数,使用变量与希望不与.MAT内容相冲突的名字,确实是这样的:
- 是否在
whos
该文件获取包含的名称。 - 迭代加载每个包含的结构。
- 使用
eval
将加载的结构分配到单元数组(其中一列数组包含.mat文件的结构名称以及一个与.mat文件中每个结构的实际内容对应的列)。
有没有更好的方法来完成同样的事情?
答
当然你可以!只需使用带有输出参数的load
即可。
x = 1;
save foo;
ls = load('foo.mat');
ls.x
答
可以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
漂亮的单元阵列。我反复查看'load'手册页,想知道''结构数组'应该是什么样的返回值?“现在我明白了! – jhfrontz 2012-02-02 04:33:22