这是相当于this question的matlab。从本质上讲,我想知道是否有办法避免在分配变量之前明确写出exists
检查变量。
答案 0 :(得分:3)
您可以使用
persistent varname
if isempty(varname)
varname=heavyComputation()
end
这只会在启动时以及每个clear fun
和clear 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