gpt4 book ai didi

matlab - 无法在 MATLAB 中接受匿名函数的输入

转载 作者:行者123 更新时间:2023-12-04 18:06:30 24 4
gpt4 key购买 nike

如果用实际函数替换我的输入,我的函数就会工作。但是,当我像下面这样更改它时,它会要求我输入一个函数大约十次,然后输出答案。

我猜这与接受来自用户的匿名功能有关吗?我不太确定发生了什么。谢谢你。这是我的代码:

f = @(x) input('Input a function');
A = [0 2];
z = myBisection(f,A);

使用 x.^2+3.*x-4 作为我的 f 函数,答案是 1.001

最佳答案

这是因为您没有应用正确的方法来接受来自 input 的输入。您实际上使用 f 做的是您正在创建一个匿名函数,如果您运行它,它会要求您输入用户的信息。如果您实际上按原样使用 f 变量键入此语句,什么 都不会发生。只有当你输入 f() 时才会发生某些事情(或者从技术上讲,f 可以是任何输入,但是因为匿名函数的输入变量没有被使用您如何指定它,我们可以在命令提示符下不指定任何输入来调用此函数,然后按 ENTER。即使你这样做,这个函数的输出也只会存储一个字符串,你需要用它来创建一个匿名函数。

要解决此问题,我要做的是使用 input 将您的函数存储为字符串。请注意,您需要为 input 添加第二个参数,这是一个字符串标志 's'。如果没有这个,input 将期待一个数字,这显然是行不通的。在此之后,使用 str2func把它变成一个匿名函数,然后运行你的二分法。 str2func 接受一个字符串,然后将该字符串转换为实际的 MATLAB 函数,您现在可以将其用于您的目的。通过将您的匿名函数接受为一个字符串,您可以将任何您想要的运算符放在您心中的内容中,只要您放置它们的方式在语法上是有效的。此外,确保您的函数是根据x 定义的,就像您在帖子中的示例一样。

这样做:

funcString = input('Input a function: ', 's'); %// Make sure you specify 's'!
f = str2func(['@(x) ' funcString]);
A = [0 2];
z = myBisection(f, A);

将其放入.m 文件中,然后运行该文件。它应该像您期望的那样运行。

关于matlab - 无法在 MATLAB 中接受匿名函数的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25254933/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com