MATLAB 函数的一个输入变量是另一个函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB 函数的一个输入变量是另一个函数相关的知识,希望对你有一定的参考价值。
比如有一个function [a,b]=example(c,d,e...)....
还有一个function a=example(f,g,h.....)......
请问这个比如example里的输入参数C可不可以是另一个function(比如说example2)?。。。
输入给function [a,b]=example(c,d,e...)....
的c,只需要,再第二个变形成
function [a,b]=example(a,d,e...)....
是的简单的将第一个函数值赋值给c,就这个意思
还有另一种情况的函数里面带入函数,即句柄
比如现在我们定义h=@sin,现在h可以当sin用了
比如h(pi/6)=sin(pi/6)
然后,,,将h带入另一个函数,比如
cos(h(pi/6))
或者带入某些特定函数,要求特定格式的函数
比如fminsearch
这个函数是用来求某一个多元函数,在某一个点附近的最小值及最小值所在的点的x值
比如f(x)=x1+x2
现在我们求这个函数在(0,0)附近的最小值及最小值所在的点的x值
用法是(特定格式)
[x,fval]=fminsearch(@(x) f(x) [0,0]) 表示求这个函数f(x)以x为自变量 ,在点(0,0)附近的最小值及最小值所在的点的x值
运行结果是
x=这个就不算了,,,
fval=这个也不算了。。。这个表示这一点的函数值 参考技术A 好像 不能吧,你可以这样写,不过matlab会把这个输入当字符串 而不会真的去运行example2
例如你有function [a,b]=example(c,d,e...)
有function a=example2(f,g,h.....)
你可以写[a,b]=example(example2,d,e...)
但有可能会出错,example2在这里就变成了原来的c,只是一个变量,不是example2这个函数本身 参考技术B 可以啊,比如ode45之类的都可以以函数作为参数,传入参数的时候前面要加上@
老版本的matlab是用函数名传入参数的
func(@example) func('example')
你看看对应函数的代码就理解了
用Matlab怎么求反函数
用Matlab怎么求反函数
1、我们首先需要知道在matlab中求反函数用到的是finverse函数,在命令行窗口中输入“help finverse”,可以看到函数的使用方法。
2、g=finverse(f)格式,f符号函数表达式,变量x,求得的反函数g是满足g(f(x))=x的函数,输入如图代码。
3、按回车键之后,可以看到求得的反函数g是asin(2/x)。
4、g=finverse(f,v)格式,求得的反函数g是满足g(f(v))=v的符号函数,输入如图代码。
5、按回车键,求得的反函数是(x - 1)^(1/2)。
参考技术A反函数:函数y=f(x),定义域为D,值域为W。如果对于任意的y,都有唯一确定的x,使得f(x)=y,则得到以y为自变量,x为因变量(函数值)的新函数,该新函数叫做y=f(x)的反函数,记作x=f-1(y),定义域为W,值域为D。
MATLAB中的函数finverse可以用来求解函数的反函数,下面将具体介绍:
1、求解下图两个函数f(x)和g(x)的反函数。
2、先利用syms定义符号变量和上图中的两个函数f(x)和g(x)。在命令行窗口输入如下代码:
syms x
f=exp(x)+1, g=sin(x+1)
回车返回如下结果:
f =
exp(x) + 1
g =
sin(x + 1)
这样就定义好了函数f(x)和g(x)。
3、利用finverse求解函数f(x)和g(x)的反函数。在命令行窗口紧接着输入如下代码:
f1=finverse(f,x), g1=finverse(g,x)
回车返回如下结果:
f1 =
log(x - 1)
g1 =
asin(x) - 1
这样就得到了f(x)和g(x)的反函数,f1=log(x - 1),g2=asin(x) - 1。
在MATLAB中,用log(x)表示ln(x),用asin(x)表示arcsin(x)。
4、还可以利用内联函数(inline)定义f(x)和g(x),然后再求解它们的反函数。使用clear all; clc清空工作区和命令行窗口,在命令行窗口输入如下代码:
syms x
f=inline('exp(x)+1'), g=inline('sin(x+1)')
回车返回如下结果:
f =
内联函数:
f(x) = exp(x)+1
g =
内联函数:
g(x) = sin(x+1)
5、在命令行窗口紧接着输入如下代码:
f1=finverse(f(x),x), g1=finverse(g(x),x)
回车返回如下结果:
f1 =
log(x - 1)
g1 =
asin(x) - 1
求得的反函数与第三步一样。需要注意:finverse( )中写得是f(x), g(x),而不是f,g,这与第三步不同。
>> syms x;
>> f=sym(2/sin(x));
>> finverse(f)
ans =
asin(2/x)
2、g=finverse(f,v):返回自变量v的符号函数f的反函数。求得的反函数g是一个满足g(f(v))=v的符号函数。当f包含不止一个符号变量时,往往调用这个格式。
当finverse求得的解不惟一时,matlab会给出警告。
>> syms x;
>> f=sym(x^2+1);
>> finverse(f)
Warning: finverse(x^2+1) is not unique.
> In C:\MATLAB6p5\toolbox\symbolic\@sym\finverse.m at line 43
ans =
(-1+x)^(1/2)
参考资料:http://hi.baidu.com/zejing/blog/item/5dd0e813a2857c015baf5371.html
本回答被提问者采纳以上是关于MATLAB 函数的一个输入变量是另一个函数的主要内容,如果未能解决你的问题,请参考以下文章