在Matlab中是否可以有带有可选参数的函数句柄

4次浏览(最近30天)
默罕默德Imron
默罕默德Imron 2021年8月12日
我有大约25-50 Matlab函数句柄保存在一个单元格数组中,所以我可以使用for循环对每个函数进行评估。这些函数句柄是从符号表达式转换而来的。
然而,一些函数句柄需要4个参数,其他需要2个参数,少数不需要任何参数(它们是常量)。例如,一些需要(x1,x2,y1,y2)作为参数,一些需要(x1,x2),一些需要(y1,y2),少数不需要。
我的问题:在Matlab中是否可能有带有可选参数的函数句柄?这意味着我可以给所有的函数句柄4个参数,让他们决定是否需要全部。如果他们不需要其中一些,他们可以直接忽略它们。
谢谢你!

接受的答案

沃尔特·罗伯森
沃尔特·罗伯森 2021年8月12日

是的,匿名函数可以使用varargin。

注意matlabFunction不会生成varargin。但是,它支持在'vars'中指定不在万博1manbetx表达式中出现的变量名。这样说绝对没错

matlabFunction(y^2, 'vars', [x, y])在这种情况下,第一个输入将被忽略
2的评论
沃尔特·罗伯森
沃尔特·罗伯森 2021年8月12日
信谊X1 x2 y1 y2
matlabFunction (y1 ^ 2 - x2 ^ 2,“var”, [x1, x2, y1, y2])
ans =function_handle与价值:
@ (x1, x2, y1, y2) x2 ^ 2 ^ 2 +日元
你仍然需要通过考试 某物 在那些位置上,但不管你通过什么都会被忽略。

登录评论。

更多的答案(2)

图像分析
图像分析 2021年8月12日
编辑:图像分析 2021年8月12日
这当然是可能的 常规的 函数。找瓦拉金和纳金帮忙。你能用常规函数吗?您仍然可以获得一个普通函数的句柄,就像您可以获得匿名函数一样。
对于一个 匿名 函数,我不知道。我认为这是不可能的。如果你想做一个常规的,正常的函数,告诉我。
1评论
默罕默德Imron
默罕默德Imron 2021年8月12日
是的,我知道用常规函数来处理。我可以用常规函数来做这个,但这会很繁琐,因为我手头有很多函数(可能超过25个函数)。无论如何谢谢你。

登录评论。


Chunru
Chunru 2021年8月12日
使用匿名函数,您可以在工作区中接受参数而不是函数参数。
= 1;b = 2;c = 1;
x = (x) *x。^2 + b*x + c;
y = f (2)%一个函数参数;ab c在工作区中
y = 9
1评论
图像分析
图像分析 2021年8月12日
关于可选参数,我认为他的想法是让你不要传递它们或指定它们,让这些变量采用函数作者事先决定的默认值。
= 1;b = 2;
x = (x, x)^2 + b*x + c;
%在没有指定c的情况下调用,并让它使用c的默认值。
% Case 1:参数a和b在工作区中。用(例如)9代替1。
y = f (2)%不能工作- c未指定
但就像你说的,方法是提前指定c的值:
% Case 2:参数a, b,和c在工作区中。对c使用1,因为这是我们指定的。
c = 1;
Y = f(2, c)%工作,因为“默认”参数a, b,和c在工作区中。
%或者干脆声明f()不带c,不要传入任何东西。
x = (x) *x。^2 + b*x + c;%从工作区中使用c值。
y = f (2)
当然,你也可以使用普通函数而不是匿名函数(我就是这么做的)。

登录评论。

标签

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!