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=example(f,g,h.....)......
输入给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,这与第三步不同。

参考技术B 1、g=finverse(f):返回符号函数f的反函数g。其中,f是一个符号函数表达式,其变量为x。求得的反函数g是一个满足g(f(x))=x的符号函数。

>> 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 函数的一个输入变量是另一个函数的主要内容,如果未能解决你的问题,请参考以下文章

matlab global定义全局变量的问题

matlab里可以自定义按位运算吗?就是输入一个矩阵和一个函数,然后以矩阵的元素值作为自变量,算出函数值

matlab中怎么输出一个变量的值?

matlab 如何输入若干个 参数变量保存到矩阵中

matlab 如何保留变量值

matlab,简述脚本M文件和函数M文件的区别?