exponenta event banner

evalin

Вычислить выражение MATLAB в указанной рабочей области

Описание

пример

evalin(workspace,expression) оценивает код MATLAB ®, представленный expression с использованием переменных в указанной рабочей области.

Примечание

Вопросы безопасности: при звонке evalin с ненадежным пользовательским вводом проверьте ввод, чтобы избежать непредвиденного выполнения кода. Примерами ненадежного пользовательского ввода являются данные, поступающие от пользователя, которого вы можете не знать, или от источника, которым вы не можете управлять. Если вам нужно решить эту проблему, рассмотрите следующие подходы:

  • Проверка входных данных для evalin. Во-первых, поиск разрешенных операций. Затем, если вы найдете другие операции, запретить выполнение.

  • Заменить evalin с альтернативой. Дополнительные сведения см. в разделе Альтернативы функции оценки.

Рекомендации по производительности: в большинстве случаев использование evalin функция также менее эффективна, чем использование других функций MATLAB и языковых конструкций, и полученный код может быть более трудным для чтения и отладки. Рассмотрите возможность использования альтернативы evalin.

пример

[output1,...,outputN] = evalin(workspace,expression) возвращает выходные данные из expression в указанных переменных.

Примеры

свернуть все

Используйте evalin чтобы получить значение переменной в базовой рабочей области MATLAB и сохранить его в новой переменной.

Определить var как матрица 5 на 5, возвращенная magic функция.

var = magic(5);

Получение значения переменной var в базовой рабочей области MATLAB и сохранить ее в переменной v.

v = evalin('base','var')
v =

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9

Входные аргументы

свернуть все

Рабочая область, в которой вычисляется выражение, указанное как 'base' или 'caller'.

Базовая рабочая область MATLAB - это рабочая область, которая отображается в командной строке MATLAB (если она отсутствует в отладчике). Вызывающая рабочая область - это рабочая область функции, которая вызывает текущую выполняемую функцию. Базовая и вызывающая рабочие области эквивалентны в контексте функции, вызываемой из командной строки MATLAB.

Примечание

Если вы используете evalin('caller',expression) в отладчике MATLAB после изменения контекста локальной рабочей области dbup или dbdownMATLAB вычисляет выражение в контексте функции, которая находится на одном уровне вверх в стеке из текущего контекста рабочей области.

Выражение для вычисления, указанное как вектор символа или скаляр строки. expression должно быть допустимым выражением MATLAB и не должно включать никаких ключевых слов MATLAB. Чтобы определить, является ли слово ключевым словом MATLAB, используйте iskeyword функция.

Пример: evalin('base','magic(5)')

Выходные аргументы

свернуть все

Выходные данные из вычисляемого выражения, возвращаемого как любой тип данных MATLAB.

Ограничения

  • evalin('caller',expression) находит только переменные в рабочем пространстве вызывающего абонента; он не находит функций в вызывающем абоненте. По этой причине использование невозможно evalin для создания дескриптора функции, определенной в вызывающем абоненте.

  • evalin нельзя использовать рекурсивно для вычисления выражения. Например, оператор evalin('caller','evalin(''caller'',''x'')') недопустим.

  • Если вы используете evalin внутри анонимной функции, вложенной функции или функции, которая содержит вложенную функцию, вычисляемый expression не создает переменные.

Совет

  • Чтобы позволить синтаксическому анализатору MATLAB выполнять более строгие проверки кода и избегать незафиксированных ошибок и других неожиданных действий, не включайте выходные аргументы во входные данные evalin функция. Например, оператор evalin('base',['output = ',expression]) не рекомендуется.

    Вместо этого укажите выходные аргументы для evalin для хранения результатов вычисленного выражения. Например:

      output = evalin('base',expression)
Представлен до R2006a