Подтвердить что ты не робот

Как удалить переменную "clear" в MATLAB

Скажем, вы какой-то новый программист, и вы делаете что-то вроде...

%...la da da
%...programming away
if such && such
    clear = 1;
else 
    clear = 0;
end 

или каким-либо другим способом вы присвойте переменной clear значение.

Есть ли способ "очистить" clear?

clearvars не работает. Нажатие на переменную рабочего пространства и ручное нажатие на удаление работает, но я думаю, что он обманывает.

4b9b3361

Ответ 1

Это будет сделано:

builtin('clear','clear')

Примечание: Имейте в виду, чтобы избежать таких операций, чтобы сохранить четкость кода. Только переписывайте, когда это точное действие, которое вы хотите выполнить. В противном случае это может привести к ошибкам в будущем, если вы забыли (или если другой человек использует ваш код и не понимает этого), что у вас есть явная (или любая другая) функция, перезаписанная. Вы можете легко назвать эту переменную как doClear, например.

Ответ 2

Любое имя, даже builtin и feval может быть переопределено. В этом случае вы можете использовать функцию handles вместо того, чтобы заставить MALTAB интерпретировать инструкцию как вызов функции:

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

Очевидно, что str2func также может быть перегружен!:) Однако существует аналогичное решение (вдохновленное статья Лорена), которая создает отдельный m файл, который делает то же самое:

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

Вызов этой функции в основной рабочей области должен позволить вам безопасно сделать clear('clear').

Второе решение использует тот факт, что m файл не "видит" переменную clear в основной рабочей области и поэтому может обращаться к фактическому дескриптору функции clear должным образом.

Ответ 3

Неинтуитивным способом является

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

Это вызывает следующее предупреждение:

Предупреждение: переменная "clear" не может быть сохранена в MAT файле, версия которого старше 7.3. Чтобы сохранить эту переменную, используйте переключатель -v7.3. Пропустив...

Он также страдает от той же проблемы, что вы можете назначить pack переменной.

Ответ 4

Интересная проблема! Мне было на удивление трудно найти способы сделать это программно (помимо того, что было предложено @TryHard)

Вот что я придумал, хотя он немного более мощный, чем clear:

!matlab &
exit

Обратите внимание, что если вы хотите ввести это в командной строке сразу, вам нужно использовать shift + enter между ними.