加载并保存filename是字符串的特定对象

时间:2016-09-21 22:17:59

标签: matlab load

我有:

save X a b c
:
load X a b

我想:

TEMP_FOLDER = 'tmp'
save TEMP_FOLDER/X a b c         % syntax fail
:
load TEMP_FOLDER/X a b

看起来我需要加载/保存的功能版本。

但我无法从阅读帮助中找出如何提取我需要的变量。

我能看到的最好的是:

stuff = {'a', 'b'};
S = load( [TEMP_FOLDER 'X'], stuff{:} );
a = S['a'];
b = S['b'];
clear stuff S

真的?呸!

也许我能做到:

load( [TEMP_FOLDER 'X'] );

但后来我丢失了有关哪些变量已被加载的信息,这使得其他人更难以遵循代码。

看起来整理文件结构的代价是代码可读性。

但我可以吃蛋糕吗?

也许我可以:

cd( TEMP_FOLDER );
load X a b
cd( '..' );

......最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

有点不清楚您的问题是什么,但如果您知道要保存的变量名称,则可以将这些名称与文件路径一起保存(使用fullfile构建)。< / p>

save(fullfile(TEMP_FOLDER, 'X.mat'), 'a', 'b', 'c')

对于加载,您可以执行相同操作并显式传递要加载的变量。如果文件中的变量不是,则还有一个额外的好处就是抛出错误。

% Load ONLY the variables: a, b
load(fullfile(TEMP_FOLDER, 'X.mat'), 'a', 'b');

正如您所指出的,如果您想将变量名称存储在单元格数组中,您可以使用以下方法轻松完成:

to_save = {'a', 'b', 'c'};
to_load = {'a', 'b'};

save(fullfile(TEMP_FOLDER, 'X.mat'), to_save{:})

load(fullfile(TEMP_FOLDER, 'X.mat'), to_load{:})

我想说这并没有真正降低代码的可读性。