加载MAT文件而不创建中间变量

时间:2019-01-31 12:01:55

标签: matlab file-io dataset structure mat-file

我正在尝试加载MAT文件并获取数据集作为输出。如果我跑

a = load('foo.mat');

a 是结构而不是数据集。为了获取数据集,我需要运行以下代码

load('foo.mat');
a = foo;

但是,以这种方式,在我的工作区中,我有两个完全相同的数据集,特别是 a foo

有没有办法只编写一行代码并导入MAT文件并获得一个数据集而不是两个?

2 个答案:

答案 0 :(得分:4)

load不将其分配给变量是一个坏主意,因为这使跟踪工作区的更改变得困难。

我通常会这样做,

a = struct2array(load('foo.mat'));

但这有一些局限性(例如,仅在foo.mat包含单个变量的情况下有效)。

答案 1 :(得分:4)

创建一个单独的函数来加载数据。

function[foo] = loader()
load('foo.mat');
end

然后将其称为:

a = loader();

由于该函数的作用域是封闭的,因此可以使用变量在mat文件中的名称加载变量。函数返回后,您可以将值分配给所需的任何名称。