2016-10-25 9 views
2

В MATLAB встроенным функциям может быть присвоено значение переменной, например plot = 5. С этого момента функция plot() будет недоступна. plot(x), для переменной x, даст ошибку компиляции. Чтобы вернуть функцию, нам просто нужно удалить переменную plot, используя clear plot.Как вернуть команду очистки, если мы присвоим ей значение (MATLAB)?

clear - это команда, обычно используемая для возврата встроенной функции.

Вопрос: если мы назначим значение (скаляр или матрицу) функции clear, как мы вернем функцию clear?

clear clear, очевидно, не будет работать. Я не мог придумать, как вернуть функцию, кроме закрытия и перезапуска MATLAB.

ответ

7

Как уже упоминалось, очень плохая практика теневых функций matlab, таких как clear - однако в этом случае вы можете использовать builtinясно ваш clear переменная:

>> clear = 1 
>> whos 
    Name  Size   Bytes Class  Attributes 

    clear  1x1     8 double    

>> builtin clear 
>> whos 
>> 

чтобы только clearclear использования:

builtin clear clear 
+1

Спасибо человеку. Это помогает. Я помогал другу отлаживать код, где 'max' было присвоено значение. Тогда он спросил меня о вышеупомянутом вопросе. – nahomyaja

1

No, clear - это функция очистки, удаления, переменной. если вы используете clear переменную, которая «затеняет» вашу функцию, функция снова может быть найдена. если вы «теневой» функции clear, то у вас больше нет возможности очистить!

Это очень плохая практика назвать вещи plotclearsurfconv или любой другой функции MATLAB, из-за затенения проблем, и вы четко выяснили, почему.

Никогда не изменяйте переменную в MATLAB!


@Jucobs дает очень хороший намек на комментарии. Используйте exist. Он возвращает другое значение, если вещь является переменной (1) или функцией (2,5)

+1

Вы могли бы хотеть упомянуть [ 'exist'] (HTTPS : //uk.mathworks.com/help/matlab/ref/exist.html). – Jubobs

+1

Я знаю, что это плохая практика. Я объяснял ошибку в коде другу. И затем он спросил меня, что произойдет, если 'clear' присваивается значение. – nahomyaja