2012-04-01 3 views
3

Здравствуйте, я новичок в MATLAB, я хотел знать как я могу сделать свою строку в функции. Я хочу получить доступ к функции в виде строки от пользователя в стандартном формате Matlab (например, exp(-10*X)-sin(pi*X)-2*tanh(X)) Здесь X - это переменная. Затем я хочу заменить «X» на «низкие» и «высокие» переменные, чтобы вычислить значение функции в этих пределах. Для этой цели я использовал 'strrep'. Я получаю следующие ошибки: 1) Неопределенная функция или переменная 'X'. 2) Я не вижу, заменено ли «X» на «низкий» и «высокий».Strrep не работает в Matlab, чтобы сделать String в функции

Любая помощь будет по-настоящему оценена. Ниже мой код.

high=input('Upper Limit of the Interval : '); 

    low=input('\nLower Limit of the interval : '); 

    usr_funct=input('Enter The Function in standard Matlab Format.\nEnter "X" for the 
    variable and * for multiply \n'); % Example exp(-10*X)-sin(pi*X)-2*tanh(X); 

    middle = (low+high)/2; 

    Flow =strrep(usr_funct, 'X', 'low'); 
    Fhigh =strrep(usr_funct, 'X', 'high'); 

    sprintf('Flow '); % This was to check if 'X' was replaced with 'low'. It is not printing anything 

ответ

2

Я думаю, что вы ищете функцию eval. Это будет оценивать строку как код matlab.

Вот пример:

str = 'exp(-10*X)-sin(pi*X)-2*tanh(X)' ; % let str be your math expression 
high = 10; % Ask the user 
low = -5; % Ask the user 

% Now we evaluate for High and Low 
X = low; % We want to evaluate for low 
ResultLow = eval(str); % That will return your value for X = low 
X = high; % We want to evaluate for low 
ResultHigh = eval(str); % That will return your value for X = high 
2

1) Неопределенная функция или переменная «X»

Если вы посмотрите на документацию для input, он говорит, что по умолчанию, он вычисляет выражение. Вам нужно добавить второй аргумент 's', чтобы он просто сохранил строку.

2) Я не могу видеть, был ли «X» заменить «низкий» и «высокий»

Вы должны напечатать sprintf(Flow) вместо sprintf('Flow'). Последний будет просто выводить «Поток» на экран, в то время как первый будет выдавать значение потока.

И, наконец, функция eval может быть использована позже, когда вы действительно хотите оценить свое выражение.

3

Использование:

usr_funct=input('Enter The Function...', 's'); 

Это возвращает введенный текст в виде строки MATLAB, без вычисления выражений.