evalin

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

Описание

пример

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

Примечание

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

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

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

Факторы о эффективности: В большинстве случаев использование 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