使用函数句柄创建创建函数和声明 syms 有什么区别?
What is the difference between creating creating functions using function handle and declaring syms?
看来,要创建一个函数 f(x,y)=x+y,我可以有两种方法。
syms x y; f(x,y) = x+y
f = @(x,y) x+y
看起来很像,不知道有没有细微的差别。
通常,如果我需要评估输入或许多样本的函数,我会选择使用第二种方法(函数 handles/anonymous 函数)。
方法一:符号函数
此方法允许使用 subs()
替换函数在特定 point/value 处计算函数。两个图都可以使用 fsurf()
.
绘制
clear;
syms x y
f(x,y) = x+y;
fsurf(f);
subs(f,[x y],[5 5])
符号函数的变体和偏移可以类似于匿名 functions/function 句柄来完成,但需要注意的是不需要在 @()
.
中包含输入参数
g = f(x,y) + f(x-5,y-5)
fsurf(g);
方法 2:匿名 Functions/Function 句柄
此方法允许您直接将值输入函数 f(x,y)
。我更喜欢匿名函数,因为它们看起来更灵活。
clear;
f = @(x,y) x+y;
fsurf(f);
f(5,5)
您可以做的一些很酷的事情是抵消和轻松添加匿名函数的变体。输入也可以是数组的形式。
x = 10; y = 2;
f(x-5,y-5) + f(x,y)
g = @(x,y) f(x,y) + f(x-5,y-20);
fsurf(g);
运行 使用 MATLAB R2019b
看来,要创建一个函数 f(x,y)=x+y,我可以有两种方法。
syms x y; f(x,y) = x+y
f = @(x,y) x+y
看起来很像,不知道有没有细微的差别。
通常,如果我需要评估输入或许多样本的函数,我会选择使用第二种方法(函数 handles/anonymous 函数)。
方法一:符号函数
此方法允许使用 subs()
替换函数在特定 point/value 处计算函数。两个图都可以使用 fsurf()
.
clear;
syms x y
f(x,y) = x+y;
fsurf(f);
subs(f,[x y],[5 5])
符号函数的变体和偏移可以类似于匿名 functions/function 句柄来完成,但需要注意的是不需要在 @()
.
g = f(x,y) + f(x-5,y-5)
fsurf(g);
方法 2:匿名 Functions/Function 句柄
此方法允许您直接将值输入函数 f(x,y)
。我更喜欢匿名函数,因为它们看起来更灵活。
clear;
f = @(x,y) x+y;
fsurf(f);
f(5,5)
您可以做的一些很酷的事情是抵消和轻松添加匿名函数的变体。输入也可以是数组的形式。
x = 10; y = 2;
f(x-5,y-5) + f(x,y)
g = @(x,y) f(x,y) + f(x-5,y-20);
fsurf(g);
运行 使用 MATLAB R2019b