在Matlab中设置启动变量的最佳方法是什么,不受"clear"等命令的影响?

eph*_*ith 1 matlab startup environment-variables

我的情况是,Matlab程序输出的大量数据需要存储在一个特定的位置,这个位置可能因机器而异.我想要的是一个全局变量,它在启动时为每台机器设置.然后,各种程序可以使用此变量来确定存储输出的目录. 请注意,该方法需要与平台无关,因为可能有3个操作系统将运行这些脚本.

我考虑的一种方法是使用setenv:

setenv('DATDIR',fullfile(path,to,dir));
Run Code Online (Sandbox Code Playgroud)

然后脚本/函数可以使用以下方法查询此变量:

savedir = getenv('DATDIR');
Run Code Online (Sandbox Code Playgroud)

在这种情况下,变量不受clearMatlab环境内部的影响.

我想要使​​用的另一种方法是简单地创建一个函数(如matlabroot),它在路径上并简单地返回一个分配了数据目录路径的字符串.

function path = datroot()
    path = fullfile(path,to,dir);
end
Run Code Online (Sandbox Code Playgroud)

最后,我的问题:还有另一种方法可以达到同样的效果吗?如果Matlab有自己的环境变量,我宁愿使用它们而不是函数或系统级变量.这可能吗?

Amr*_*mro 5

使用getpref/setpref/ispref/addpref/rmpref函数集.根据文件:

首选值是持久的,并在MATLAB会话之间保持其值.它们存储的位置取决于系统.

这就像.ini或Java .properties文件,而是使用MAT文件来保存值(可以是任何MATLAB类型).在我的Windows机器上,使用的文件存储为:

%APPDATA%\MathWorks\MATLAB\R2010b\matlabprefs.mat
Run Code Online (Sandbox Code Playgroud)