Check if a variable exists in the workspace, within a function
Ältere Kommentare anzeigen
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 Kommentare
Walter Roberson
am 29 Mär. 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
am 29 Mär. 2019
Stephen23
am 29 Mär. 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
am 29 Mär. 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.
Akzeptierte Antwort
Weitere Antworten (0)
Kategorien
Mehr zu Scope Variables and Generate Names finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!