Have a function check whether a variable already exists in the base workspace
이전 댓글 표시
if ~exist('A','var')
A=[];
else
A=evalin('base','A');
end
This code works great from a script, but not from within the function since it has its own workspace. I do not see an option to check in the base workspace.
댓글 수: 2
Joel Ngouadjeu
2016년 12월 28일
편집: Joel Ngouadjeu
2016년 12월 28일
ismember('var',evalin('base','who'))
this also work very fine where var is your variable.
Steven Lord
2016년 12월 29일
While it is possible to do this, it's not a good idea to do this. You're giving any function that has access to the base workspace (i.e. any function that can call assignin) the ability to control what your function does.
Imagine if you gave anyone with a web browser the ability to control the temperature setting of the burners on your stove. You'd come home one day to find the fire department outside your home (or perhaps the pile of ash and soot that used to be your home.)
채택된 답변
추가 답변 (2개)
Paulo Silva
2011년 4월 22일
In a script you don't need the evalin because the variables are in the same scope as the workspace ones, in a function do this:
try
A=evalin('base','A');
catch
A=[];
end
The code also works in the workspace or a script but it's best just to
if ~exist('A','var'),A=[];end
Tony
2011년 4월 22일
댓글 수: 2
Jan Berling
2014년 2월 17일
function InBase=fnBaseExist(var1)
W = evalin('base','who');
InBase=0;
for ii= 1:length(W)
nm1=W{ii};
InBase=strcmp(nm1,var1)+InBase;
end
InBase(InBase>0)=1;
This modification of Tonys' function reduces the calculation time, especially if there is a lot of data in the workspace. The "who" command only lists the names of the variables, whereas the "whos" command also lists the size of the variables, etc.. (With Matlab under memory stress, whos took about 1.000s and who nearly 0s.)
Gaganjyoti Baishya
2020년 6월 20일
try
x=evalin('base', 'yourVar');
catch
x=0
if ~x x is not present in base
else x is present
카테고리
도움말 센터 및 File Exchange에서 Whos에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!