3

您好,我是 MATLAB 新手,我想知道如何将我的字符串变成函数。我想以标准 Matlab 格式(例如exp(-10*X)-sin(pi*X)-2*tanh(X))从用户那里以字符串的形式访问函数,这里 X 是变量。然后我想用 'low' 和 'high' 变量替换 '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
4

3 回答 3

3

利用:

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

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

于 2012-04-01T09:11:40.990 回答
2

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

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

2) 我看不到“X”是否被“低”和“高”替换

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

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

于 2012-04-01T09:10:41.080 回答
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
于 2012-04-01T09:11:31.940 回答