Защитите имена функции и опции

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.

Имена встроенных функций MuPAD® и опций защищены. При попытке присвоить значение функции MuPAD или опции, система выдает ошибку. Этот подход гарантирует, что вы не перезапишете встроенную функцию или опцию случайно.

Если вы создаете новую процедуру MuPAD, рекомендуется защитить процедуру и все ее опции, особенно если вы часто используете ту процедуру. Например, MuPAD не обеспечивает функцию для вычисления чисел Лукаса. Можно записать собственную процедуру для вычисления чисел Лукаса, и затем защитить имя процедуры.

Числа Лукаса являются последовательностью целых чисел. Формула рекурсии, которая задает nth номер Лукаса похож на определение Чисел Фибоначчи:

Создайте следующую процедуру, которая вычисляет nth номер Лукаса:

lucas:= proc(n:Type::PosInt)
  option remember;
begin
  if n = 1 then
    1
  elif n = 2 then
    3
  else
    lucas(n - 1) + lucas(n - 2)
  end_if
end_proc:
lucas(i) $ i = 1..5

Теперь защитите имя процедуры, lucas, использование protect с ProtectLevelError опция:

protect(lucas, ProtectLevelError):

ProtectLevelError позволяет вам установить полную защиту для идентификатора. Теперь пытаясь присвоить любое значение lucas результаты по ошибке:

lucas := 0
Error: Identifier 'lucas' is protected. [_assign]

В качестве альтернативы можно использовать ProtectLevelWarning опция. В этом случае можно все еще присвоить значение защищенному идентификатору, но предупреждение появляется, например:

protect(lucas, ProtectLevelWarning):

Можно присвоить любое значение lucas теперь, но такое присвоение инициировало предупреждение:

lucas := 0
Warning: Protected variable 'lucas' is overwritten. [_assign]

Для дальнейших расчетов удалите защиту от идентификатора lucas:

unprotect(lucas):