How to remove the variable "clear" in MATLAB

A non intuitive way is

clear = rand(1000,500,700);
pack

This produces the following warning:

Warning: Variable 'clear' cannot be saved to a MAT-file whose version is older than 7.3. To save this variable, use the -v7.3 switch. Skipping...

It also suffers from the same issue that you can assign pack to be a variable.


This will do it:

builtin('clear','clear')

Note: Keep in mind to avoid such operations to keep code clarity. Only do overwrite when it is the exact action you want to take place. Otherwise it may cause future bugs if you forgot (or if another person uses your code and didn't realize it) that you have the clear (or any other) function overwritten. You could easily name this variable as doClear for example.


Any name, even builtin and feval can be overriden. In such case, you can use function handles instead to force MALTAB into interpreting a statement as a function call:

clear = str2func('clear');
clear('clear')

Obviously, str2func can also be overrriden! :) however, there exists a similar solution (inspired by Loren's article), which is creating a separate m-file that does the same thing:

function clearclear()
    assignin('caller', 'clear', @clear);

Calling this function in the main workspace should allow you to do clear('clear') safely.

The second solution takes advantage of the fact that the m-file doesn't "see" the variable clear in the main workspace, and therefore can access the actual handle of the clear function properly.

Tags:

Matlab