The scoping rules for nested and anonymous functions require that all variables used within the function be present in the text of the code.
If you attempt to dynamically add a variable to the workspace of an anonymous function, a nested function, or a function that contains a nested function, then MATLAB® issues an error of the form
Attempt to add variable to a static workspace.
This table describes typical operations that attempt dynamic assignment, and the recommended ways to avoid it.
Type of Operation
Best Practice to Avoid Dynamic Assignment
Specify the variable name as an input to the
If possible, avoid using these functions altogether. See Alternatives to the eval Function.
Calling a MATLAB script that creates a variable
Convert the script to a function and pass the variable using arguments. This approach also clarifies the code.
Assigning to a variable in the MATLAB debugger
Assign the variable into the base workspace, such as
Another way to avoid dynamic assignment is to explicitly declare
the variable within the function. For example, suppose a script named
a value to variable
X. A function that calls
makeX and explicitly
X avoids the dynamic assignment error
X is in the function workspace. A common
way to declare a variable is to initialize its value to an empty array:
function noerror X = ; nestedfx function nestedfx makeX end end