A Clear Conundrum
Ever been in the situation where you accidently used a variable named something else in MATLAB and it caused you a problem? Ever done it with a variable named clear? It can be devilish to get out of the mess. Here are some ways.
Contents
First let's set up the situation.
clear = 'mud'
zerosAndOnes = [true true false]
clear = mud zerosAndOnes = 1 1 0
Now we realize we don't need zerosAndOnes. Here's what happens if I try to clear that variable.
Attempt #1
clear zerosAndOnes ??? Error: "clear" was previously used as a variable, conflicting with its use here as the name of a function or command. See MATLAB Programming, "How MATLAB Recognizes Function Calls That Use Command Syntax" for details.
Attempt #2
clear('zerosAndOnes') ??? Error: "clear" was previously used as a variable, conflicting with its use here as the name of a function or command. See MATLAB Programming, "How MATLAB Recognizes Function Calls That Use Command Syntax" for details.
Attempt #3
clear(zerosAndOnes) ans = mu
Attempt #4
clear variables ??? Error: "clear" was previously used as a variable, conflicting with its use here as the name of a function or command. See MATLAB Programming, "How MATLAB Recognizes Function Calls That Use Command Syntax" for details.
What to Try Now?
Here are some thoughts on what to try next (and behold, they each work).
- Open the Workspace browser, select the variable named zerosAndOnes and delete it with the icon containing the red X, or right click on the variable and select "Delete"
- Use the function builtin to call the built-in version of clear.
- quit can help you out, if you are willing and able to start your MATLAB session over.
who
Your variables are: clear myThoughts zerosAndOnes
builtin('clear','zerosAndOnes') who
Your variables are: clear myThoughts
Of course, what I should do here is clear the variable named clear itself now and name it something else.
builtin('clear','clear') myThoughts = 'mud' who
myThoughts = mud Your variables are: myThoughts
More Ways?
What have you used to get out of such a snarl in MATLAB? Did you know about the function builtin (and that it can't be used with MATLAB code defined in text files, but truly only for ones that are compiled into the MATLAB executable)?