首页 文章

将.mat文件中的变量加载到不同名称的变量中

提问于
浏览
7

假设我有一个.mat文件,其中有几个相同结构的实例,每个实例都有一个不同的变量名 .

我想处理文件中找到的每个实例(我发现使用 whos('-file' ... ) . 我希望 load 允许我指定变量的目标名称,这样我就不必编写自修改代码了 eval ) .

执行此操作的强力方法似乎是创建一个辅助函数,使用名称希望与.mat内容不冲突的变量,可以执行以下操作:

  • 文件上是否 whos 获取包含的名称 .

  • 迭代加载每个包含的结构 .

  • 使用 eval 将加载的结构分配到单元数组中(其中数组的一列包含.mat文件的结构名称,而相应的列包含.mat文件中每个结构的实际内容) .

有没有更优雅的方式来完成同样的事情?

2 回答

  • 4

    当然可以!只需将 load 与输出参数一起使用即可 .

    x = 1;
    save foo;
    
    ls = load('foo.mat');
    ls.x
    
  • 8

    你可以将MAT文件中的数据 load 转换成一个结构

    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
    

相关问题