Strrep在Matlab中无法使String成为函数

时间:2012-04-01 08:59:25

标签: string matlab str-replace numerical equation-solving

您好我是MATLAB的新手,我想知道如何让我的字符串变为功能。我希望以标准Matlab格式(例如exp(-10*X)-sin(pi*X)-2*tanh(X))从用户访问该函数作为字符串。这里X是变量。然后我想用'低'和'高'变量替换'X'来计算这些极限的函数值。我为此目的使用'strrep'。我收到以下错误 1)未定义的函数或变量'X'。 2)我无法看到'X'是否被'低'和'高'取代。

任何帮助都将得到真正的赞赏。 以下是我的代码。

    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

3 个答案:

答案 0 :(得分:3)

使用:

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

这将返回输入的文本作为MATLAB字符串,而不评估表达式。

答案 1 :(得分:2)

1)未定义的函数或变量'X'

如果查看input的文档,它会说默认情况下它会计算表达式。你需要为它添加第二个's'参数来保存字符串。

2)我无法看到'X'是否被'低'和'高'取代

您应该输入sprintf(Flow)而不是sprintf('Flow')。后者只会将“Flow”输出到屏幕上,而前者将输出Flow的值。

最后,eval函数可能会在您真正想要评估表达式时使用。

答案 2 :(得分:2)

我认为您正在寻找评估功能。这会将字符串评估为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