Имена функций и параметры в переменных Matlab - PullRequest
0 голосов
/ 07 января 2009

В моем m-файле matlab я использую некоторую логику (string concat) для построения переменных вроде этого:

c = 'CalcPrediction(1,10)'

Это означает, что у меня есть строка, которая является функцией, и некоторые параметры. Как я могу сделать этот вызов функции?

Попытка выполнения (c) приводит к:

>> run(c)
??? Error using ==> run at 71
CalcPrediction(1,10) not found.

Примечание: run (c) работает нормально, если нет параметров. Например. с = 'CalcPrediction'; бег (с);

Ответы [ 3 ]

7 голосов
/ 07 января 2009

Команда, которую вы ищете, это eval() вместо run()

0 голосов
/ 08 января 2009

На самом деле не видя сценария, его сложно обобщить, но ...

Где squareRoot - это m-файл, содержащий только: y=sqrt(x)

Затем выполняется:

x=[2,0];

c='squareRoot';

run(c);

дает:

y =

1.4142 0

Этот пример означает, что вы можете определить сценарий для использования объявленной переменной (в данном случае x), а затем объявить переменную перед запуском сценария.

Без сценария я не знаю, что вы делаете с параметрами. Если это не отвечает на ваш вопрос, опубликуйте сценарий.

0 голосов
/ 07 января 2009

Вы хотите использовать str2func . Эта функция принимает строку и возвращает обработчик функции, который может быть вызван с вашими параметрами. Ознакомьтесь с примерами на связанной странице.

fh = str2func('CalcPrediction')
fh(1, 10)
...