我试图写一个简单的脚本来请求一个方程作为输入,我喜欢用这个函数多次计算而不总是请求用户输入。
我当前的脚本将f定义为函数句柄并执行了2次函数,所以我总是要求一个新的等式,这是不可取的。
f = @(x) input('f(x) = ');
a = f(2); % requests user input
b = f(3); % requests user input again
它看起来应该更像(不工作)。
func = input('f(x) = ');
f = @(x) func;
a = f(2);
b = f(3);
这里没有用户输入来了解我试图实现的目标。
f = @(x) x^2;
a = f(2);
b = f(3);
我想我找到了一个符号数学工具箱的解决方案,但我没有这个插件,所以我不能使用/测试它。
还有其他解决方案吗?
答案 0 :(得分:4)
此处不需要符号数学工具箱。您仍然可以使用Shape
。请记住,input
的默认方法是直接获取输入并将其指定为变量,其中根据MATLAB规则假定输入在语法上是正确的。那不是你想要的。您需要使用def check_if_element_appeared(self, element_locator, renew_locator, renew_interval=10, wait_interval=300):
if not self.is_visible(renew_locator):
raise AssertionError("Error Message")
start_time=int(time())
scan_time = start_time
if not self.is_visible(element_locator):
while int(time())<=start_time+wait_interval:
if int(time()) >= scan_time + renew_interval:
scan_time = int(time())
self.click_element(renew_locator)
if self.is_visible(element_locator):
break
if not self.is_visible(element_locator):
raise AssertionError("Error Message")
self._info("Message")
else:
self._info("Current page contains element '%s'." % element_locator)
选项作为第二个参数将输入作为字符串,然后使用str2func
将字符串转换为匿名函数:
input
请注意,我必须将's'
匿名函数字符串与您使用func = input('f(x) = ', 's');
f = str2func(['@(x) ' func]);
a = f(2);
b = f(3);
提供的输入函数连接。
假设我想创建一个对输入中的每个元素进行平方的函数:
@(x)
请特别注意,我假设函数将元素方式平方输入中的每个元素。取幂运算符前面的input
运算符(即>> func = input('f(x) = ', 's');
f(x) = x.^2
>> f = str2func(['@(x) ' func])
f =
@(x)x.^2
>> a = f(2)
a =
4
>> b = f(3)
b =
9
)非常重要。