Matlab:仅在尚未存在的情况下分配变量?

时间:2013-12-02 06:45:03

标签: matlab

这是相当于this question的matlab。从本质上讲,我想知道是否有办法避免在分配变量之前明确写出exists检查变量。

3 个答案:

答案 0 :(得分:3)

您可以使用

persistent varname
if isempty(varname)
    varname=heavyComputation()
end

这只会在启动时以及每个clear funclear all之后重新计算varname。

答案 1 :(得分:2)

为什么要避免exist?这正是它的用途:

if ~exist('t', 'var')
   t = 1
end

对于您的特定用例,如果您不希望重新计算某个变量,请将save放入MAT文件中,并在重新计算之前检查其是否存在。例如,如果您正在计算A,那么您可以执行以下操作:

if exist('mycalcs.mat', 'file')
   load('mycalcs.mat', 'A')      %// Load precalculated A
else
   A = do_some_calculations();   %// Calculate A
   save('mycalcs.mat', 'A');     %// Save it to a workspace file
end

这使您可以重新运行脚本而无需重复计算,即使在清除了相关变量或完全关闭MATLAB之后也是如此。

答案 2 :(得分:0)

您可以使用语法who(variable_name)来检查变量是否存在于工作空间中,如下所示:http://www.mathworks.com/help/matlab/ref/who.html