Input 如何从键盘上读取八度音阶的函数并在以后使用?
我正在用八度音阶写一个脚本来计算一个球如何在表面上反弹。但是曲面是由一个我必须从用户输入中读取的函数定义的。 我有一句话:Input 如何从键盘上读取八度音阶的函数并在以后使用?,input,octave,Input,Octave,我正在用八度音阶写一个脚本来计算一个球如何在表面上反弹。但是曲面是由一个我必须从用户输入中读取的函数定义的。 我有一句话: funcInput = input("f(x,y) = ", "s") 将我在终端中写入的内容作为字符串保存到“funcInput”变量。到目前为止还不错。现在我需要用脚本中的其他变量替换函数中的“x”和“y”,然后计算函数的根。我不知道怎么做 稍后我要绘制一个曲面,以便: ezsurf(strcat('@(x, y) ', fun
funcInput = input("f(x,y) = ", "s")
将我在终端中写入的内容作为字符串保存到“funcInput”变量。到目前为止还不错。现在我需要用脚本中的其他变量替换函数中的“x”和“y”,然后计算函数的根。我不知道怎么做 稍后我要绘制一个曲面,以便:
ezsurf(strcat('@(x, y) ', funcInput))
它会产生一个错误
error: isinf: not defined for function handle
我猜此函数不以字符串作为参数,因为当我这样做时:
ezsurf(@(x, y) (x.^2+y.^2)/10')
它就像一个符咒。所以我的问题是:我如何使它工作,或者我可以用什么其他方式从用户那里读取函数并在以后使用它?您可以使用
eval
方法:
funcInput = input('f(x, y) = ', 's');
eval(['func = @(x, y) (' funcInput ');']);
% Now the variable func is a function handle to the input function from the user
例如:
>> funcInput = input('f(x, y) = ', 's');
f(x, y) = x+4*y^2-2*x*y % user input
>> eval(['func = @(x, y) (' funcInput ');']);
>> func
func =
@(x, y) (x + 4 * y ^ 2 - 2 * x * y)
>> func(2, 3)
ans = 26
希望它会有用 倍频程提供的
str2func
函数正是为了实现这一目的。(还有与之类似的
inline
函数,但这将导致弃用)
例如:
话虽如此,ezsurf
确实可以直接从funcInput
工作。您所做的错误是,您试图将其转换为类似于匿名函数的字符串。不要,直接插入字符串即可:
funcInput = input("f(x,y) = ", "s")
ezsurf( funcInput, [ -10, 10 ] )
非常感谢,它帮助并解决了我的问题。:)听到这个消息我很高兴!
funcInput = input("f(x,y) = ", "s")
ezsurf( funcInput, [ -10, 10 ] )