我有:
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( '..' );
......最好的方法是什么?
答案 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{:})
我想说这并没有真正降低代码的可读性。