您好我是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
答案 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