I can't figure out whether this is a MATLAB bug or a PEBKAC issue, but in case of the latter, I figured I'd check here first.
I have a nested function with some persistent variables. Occasionally, when some condition is met in the outer function, I wish to be able to reset these variables to their initial state (i.e. [ ]). It doesn't seem to work to use "clear MyNestedFunc" in the outer function:
function MyFunc() MyNestedFunc(); MyNestedFunc(); clear MyNestedFunc MyNestedFunc(); function MyNestedFunc() persistent foo if isempty(foo) foo = 1; else foo = foo + 1; end disp(foo) endend
My desired output from this is 1, 2, 1, but what I get is 1, 2, 3.
The way to do it so that it works is apparently to make foo a persistent variable in the outer function, but for reasons of code clarity and organization I'd really prefer to encapsulate it inside the nested function if I could.
Is this a MATLAB bug because "clear MyNestedFunc" doesn't have the expected effect, or am I trying to do something in the wrong way?
Best Answer