Check if a variable exists in the workspace, within a function
Show older comments
Hi,
I have a function which needs to check if a variable ('error_N') exists in the work space. If it does not exist, the function must create it.
In the following example, the function does not see the variable 'error_N' from the workspace. I tried to solve it by declaring it as a global variable. However, in the case the variable does not exist in the Workspace, Matlab creates an EMPTY variable called 'error_N' when reading "global error_N", so the function cannot create it with the value that I would like it to get.
Do you have any suggestions?
Thanks!
function output = function_example(input)
% global error_N ???????
E_1 = exist('error_N','var');
if E_1 ==1
else
error_N = 0.001;
end
output = function2(input);
error = output/N;
while error>error_N
blablabla
output....blablabla
end
end
4 Comments
Walter Roberson
on 29 Mar 2019
Is it intended to check the variable in the workspace of the function, or is to check the variable in the workspace of the caller of the function?
If the work is to be done in the workspace of the caller of the function, then note that MATLAB provides for "static" workspaces, and you cannot create new variables in static workspaces from inside a called function. Static workspaces exist in all cases in which there is an "end" statement matching the "function" statement. Nested functions are only permitted with static workspaces. Functions that are defined inside script files must have matching "end" statements and so have static workspaces.
Vogel
on 29 Mar 2019
Stephen23
on 29 Mar 2019
Introspective programming (such as checking for the existence of variables) is slow and leads to complex code. The MATLAB documentation recommends to avoid doing this:
Better to simply use nested functions, known variable names, and explicit logic that keeps track of what data you have.
Walter Roberson
on 29 Mar 2019
The path you have defined so far is:
if variable exists in caller
do nothing in current workspace
else
create variable in current workspace
end
but in the path you defined, you do not pull out the variable from the caller.
Accepted Answer
More Answers (0)
Categories
Find more on Scope Variables and Generate Names in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!