如何根据Matlab中的另一个内联函数定义一个内联函数?
How to define an inline function according to another inline function in Matlab?
假设我有一个以这种方式创建的变量向量:
A = sym('A%d',[1 , 3]);
还有一个内联函数,它是 A 的函数:
f = inline(A(1)^2 + A(2)^3 - 10*A(3) , 'A');
现在,问题是如何定义另一个具有以下形式的函数,例如 g
:
g = f*10
或依赖于 f
.
的任何其他类型的函数
提前致谢
按照@Daniel 的建议,您应该使用anonymous functions。在 inline
的文档中,Mathworks 警告说这将在未来的版本中删除,并告诉您使用匿名函数。
匿名函数的语法很简单:
f = @(A) A(1)^2 + A(2)^3 - 10*A(3)
和@(A)
,你定义你想要一个输入变量,并将它命名为A
。如果你有两个输入,A
和 B
,那么写 @(A,B)
。但要注意:这些名称 A
和 B
只是匿名函数中的内部名称。以下两个函数 100% 相同:
f1 = @(x) 10*x
f2 = @(A) 10*A
您可以像调用普通函数一样调用这些匿名函数,例如
f([1, 2, 3])
f(x)
如果你想创建一个函数g = 10*f
,那么你定义这个函数为
g = @(A) 10*f(A)
这是一个小演示:
A = sym('A%d',[1 , 3]);
f = @(x) x(1)^2 + x(2)^3 - 10*x(3)
g = @(x) 10*f(x)
g(A)
ans =
10*A1^2 + 10*A2^3 - 100*A3
假设我有一个以这种方式创建的变量向量:
A = sym('A%d',[1 , 3]);
还有一个内联函数,它是 A 的函数:
f = inline(A(1)^2 + A(2)^3 - 10*A(3) , 'A');
现在,问题是如何定义另一个具有以下形式的函数,例如 g
:
g = f*10
或依赖于 f
.
提前致谢
按照@Daniel 的建议,您应该使用anonymous functions。在 inline
的文档中,Mathworks 警告说这将在未来的版本中删除,并告诉您使用匿名函数。
匿名函数的语法很简单:
f = @(A) A(1)^2 + A(2)^3 - 10*A(3)
和@(A)
,你定义你想要一个输入变量,并将它命名为A
。如果你有两个输入,A
和 B
,那么写 @(A,B)
。但要注意:这些名称 A
和 B
只是匿名函数中的内部名称。以下两个函数 100% 相同:
f1 = @(x) 10*x
f2 = @(A) 10*A
您可以像调用普通函数一样调用这些匿名函数,例如
f([1, 2, 3])
f(x)
如果你想创建一个函数g = 10*f
,那么你定义这个函数为
g = @(A) 10*f(A)
这是一个小演示:
A = sym('A%d',[1 , 3]);
f = @(x) x(1)^2 + x(2)^3 - 10*x(3)
g = @(x) 10*f(x)
g(A)
ans =
10*A1^2 + 10*A2^3 - 100*A3