精华内容
下载资源
问答
  • 本文概述匿名函数是简单的(单行)用户定义函数, 无需创建单独的函数文件(M文件)即可进行定义。可以在命令窗口中, 脚本文件中或用户定义的函数中定义匿名函数。通过键入以下命令来生成匿名函数:其中f是函数句柄。输入...

    本文概述

    匿名函数是简单的(单行)用户定义函数, 无需创建单独的函数文件(M文件)即可进行定义。可以在命令窗口中, 脚本文件中或用户定义的函数中定义匿名函数。

    通过键入以下命令来生成匿名函数:

    matlab-anonymous-function.png

    其中f是函数句柄。输入列表可以包含一个变量, 也可以包含多个用逗号分隔的变量。创建函数后, 我们可以将其与它的句柄一起使用以评估函数或将其作为参数传递给其他函数。

    例如, 创建一个匿名函数来求值并返回圆的面积:

    >> cirarea = @ (radius) pi * radius .ˆ 2;

    该函数处理的变量名是cirarea。有一个输入参数”半径”。函数的主体为表达式pi * radius。2。使用。数组函数, 以便可以将半径向量传递给函数。

    然后使用句柄并向其传递参数来调用这些函数。使用函数句柄的函数调用看起来就像使用函数名称的函数调用。

    >> cirarea(4)

    ans =

    50.2655

    >> cirarea(1:4)

    ans =

    3.1416 12.5664 28.2743 50.2655

    cirarea的类型可以使用类函数找到:

    >> class(cirarea)

    ans =

    function_handle

    与保存在代码文件中的函数不同, 如果没有参数传递给匿名函数, 则括号必须在函数定义和函数调用中。例如, 以下是匿名函数, 该函数打印带有两个小数位的随机实数, 以及对该函数的调用:

    >> prtran = @ () fprintf('%.2f\n', rand);

    >> prtran()

    0.95

    键入函数句柄的名称将显示其内容, 即函数定义。

    >> prtran

    prtran =

    @ () fprintf('%.2f\n', rand)

    匿名函数可以存储到MAT文件中, 然后可以在需要时加载。

    >> cirarea = @ (radius) pi * radius .ˆ 2;

    >> save anonfns cirarea

    >> clear

    >> load anonfns

    >> who

    Your variables are:

    cirarea

    >> cirarea

    cirarea =

    @ (radius) pi * radius .ˆ 2

    自定义匿名功能

    具有一个自变量的匿名函数的示例:

    功能:

    matlab-anonymous-function2.png

    可以通过以下方式在命令窗口中将x定义为标量的匿名函数:

    >> FA= @ (x) exp(x^2)/sqrt(x^2+5)

    FA =

    @(x)exp(x^2)/sqrt(x^2+5)

    如果最后没有键入分号, MATLAB将显示该函数。然后, 该函数可用于x的不同值:

    >> FA(2)

    ans =

    18.1994

    >> z = FA(3)

    z =

    2.1656e+003

    如果期望x是一个数组, 并为每个元素计算函数, 则必须修改该函数以进行逐元素计算。

    >> FA = @ (x) exp(x.^2)./sqrt(x.^2+5)

    FA =

    @(x)exp(x.^2)./sqrt(x.^2+5)

    > > FA ([ 1 0 . 5 2])

    ans =

    1.1097 0.5604 18.1994

    具有各种自变量的匿名函数的示例:

    函数f(x, y)= 2×2-4xy + y2可以通过以下方式定义为匿名函数:

    >> HA = @ (x, y) 2*x^2 - 4*x*y + y^2

    HA =

    @ (x, y) 2*x^2 - 4*x*y + y^2

    然后, 匿名函数可用于x和y的特定值。例如, 键入HA(2, 3)给出:

    >> HA (2, 3)

    ans =

    -7

    参数化匿名函数

    工作空间中的变量可以在匿名函数的定义中使用。这称为参数化。例如, 要在匿名函数中使用常量c = 2:

    >> c = 2;

    >> f = @(x) c*x

    f =

    @(x)c*x

    >> f(3)

    ans =

    6

    f(3)使用变量c作为自变量与提供的x相乘。注意, 如果此时将c的值设置为其他值, 则调用f(3), 结果将不会有所不同。 c的值是创建匿名函数时的值:

    >> c = 2;

    >> f = @(x) c*x;

    >> f(3)

    ans =

    6

    >> c = 3;

    >> f(3)

    ans =

    6

    展开全文
  • MATLAB和Python中都有一个叫做匿名函数的东西,在这里对比一下。一. MATLAB中这样来定义一个匿名函数:f=@(x1,x2,...)exper@后面的括号里面是自变量,然后跟一个空格(没有空格也行),然后跟着关于x1, x2, ...的...

    在MATLAB和Python中都有一个叫做匿名函数的东西,在这里对比一下。

    一. MATLAB中这样来定义一个匿名函数:

    f = @(x1, x2, ...) exper

    @后面的括号里面是自变量,然后跟一个空格(没有空格也行),然后跟着关于x1, x2, ...的表达式。

    下面来举几个例子。

    1.

    >> f = @(x) x.^2 -1

    f =

    @(x)x.^2-1

    >> x = -1:0.01:1;

    >> y = f(x);

    >> plot(x, y)

    9bb5691fbbd08e9948b458d5afb9b7b3.png

    2.

    %创建一个单词库

    >> words={};

    >> for i = 'a':1:'z'

    words = [words, i];

    end

    %创建一个单词对应含义的库,他两按照位置对应

    >> meaning = {}

    meaning =

    {}

    >> for i = 1:length(word)

    meaning{i} = i;

    end

    %找出单词对应的含义

    >> word = 'f';

    >> f = @(s) strcmp(s, word);

    >> wordIndex = cellfun(f, words);

    >> expalantation = meaning(wordIndex)

    expalantation =

    [6]

    前面那两个for循环相当于建立了两个小小的单词数据库,词义是通过对应位置来关联。

    到了后面,先输入单词'f',然后创建一个匿名函数f,f的自变量是s,这个匿名函数的功能是把s与输入的word进行比较,如果相同返回真。

    然后到cellfun了,第一个参数是函数句柄,第二个参数是一个cell,把cell中的每一个元素都传给函数句柄对应的函数中。然后返回的wordIndex是一个逻辑数组,用它去索引出位置为真时对应的元素。

    bcaa450c66109a491db5b13713c4a57a.png

    二. Python中的匿名函数,(lambda表达试)

    f =lambda 参数 : 参数表达式

    下面来举个简单的例子,其实和matlab中的也差不多

    比如:画x^2 - 1 图像

    import matplotlib.pyplot as plt

    import numpy as np

    x = np.arange(-1, 1, 0.01)

    f = lambda x : x**2 - 1

    y = f(x)

    plt.plot(x,y)plt.show()

    82dc187777f7e30eb8388226ea53998a.png

    Python中还有个类似于MATLAB中arrayfun和cellfun的东西,即map函数,它是把可迭代序列中的每一个元素作为函数的参数进行计算然后返回个map对象(是一个生成器),可以用list转化成列表。

    所以上面的y可以写成list(map(f, x))

    -- END --

    展开全文
  • 导航:网站首页 >在matlab中如何实现符号变量替换符号表达式 , ...匿名网友:用subs)函数可以实现符号表达式中 符号变量的替换工作。符号变量可以被其他符号变量替换,也可以用数值,数值矩阵向量来替换,此时相...

    导航:网站首页 >

    在matlab中如何实现符号变量替换符号表达式 , matlab 表达式中用的符号变量与算法中的符号变量不同(

    在matlab中如何实现符号变量替换符号表达式 , matlab 表达式中用的符号变量与算法中的符号变量不同(变量有多个...

    匿名网友:

    用subs)函数可以实现符号表达式中 符号变量的替换工作。

    符号变量可以被其他符号变量替换,也可以用数值,数值矩阵向量来替换,此时相当于给符号表达式中的符号变量赋值。

    例如 :syms a b c dy=a^3+b^2+csubs(y,a,d) %实现另一符号变量d替换替换符号变量a.subs(y,b,3)%用数值替换subs(y,b,1,2,3)%用数值向量替换subs(y,b,1,2,3;4,5,6;7,8,9)%用数值矩阵来替换

    匿名网友:

    1、syms命令是创建多个符号变量的简捷写法,syms a b positive相当于a = sym('a','positive');b = sym('b','positive');所以,这种写法,a和b都是正的。

    2、如果只想声明b是正数,那就考虑分开写:syms asyms b positive但是,如果先syms a b,经过一系列操作后,再声明syms b positive,也是有效的但很显然只对声明为正之后的操作有效。

    下面是一个例子:>> syms b>> Dt=sym('Dirac(t-b)') Dt = Dirac(t-b)>> laplace(Dt) ans = laplace(Dirac(-t+b),t,s)>> syms b positive>> laplace(Dt) ans = exp(-b*s)值得特别指出的是,clear b并不会清除b的positive属性,例如在上面的代码后面,如果再进行下面的操作:>> clear b>> laplace(Dt) ans = exp(-b*s)>> syms b real>> laplace(Dt) ans = exp(-s*b)-exp(-s*b)*Heaviside(-b)>> syms b unreal>> laplace(Dt) ans = laplace(Dirac(-t+b),t,s也就是说,除非用命令改变b的属性或者用clear mex或clear all之类的做法强制重启符号计算内核,前面声明的positive或real属性会一直有效。

    3、2011b之前的MATLAB,对符号变量的限定只有三种选择:复数unreal,默认,实数real,或者正数positive,因而无法实现你希望b>=0的要求。

    2012a引入了三个函数:assume、assumeAlso和assumptions,可以对符号变量属性进行更多的限定,可以实现你的上述要求。

    更详细的信息请查阅这几个函数的文档。

    4、据我所知,evalin用于指定在特定工作区内执行指定的命令主要的作用在于从函数中访问基本工作区,像楼上所说的借助它对符号变量“进行更细腻的操作”则是闻所未闻。

    希望对有帮助,有问题可追问。

    匿名网友:

    matlab中subs)是符号计算函数,表示将符号表达式中的某些符号变量替换为指定的新的变量,常用调用方式为:subs(S,OLD,NEW) 表示将符号表达式S中的符号变量OLD替换为新的值NEW。

    下面具体演示4种不同形式的OLD和NEW的调用效果:首先在matlab命令窗口输入如下代码,定义三个符号变量和一个符号表达式S1、将变量x替换为数值1: subs(S,x,1)2、将变量x替换为变量z: subs(S,x,z)3、同时将变量x和y分别替换为1和z:subs(S,{x,y},{1,z})4、将单变量替换为数组:subs(S,x,1 2;3 4)

    匿名网友:

    数学计算有数值计算与符号计算之分。

    这两者的根本区别是 : 数值计算的表达式、矩阵变量中不允许有未定义的自由变量 , 而符号计算可以含有未定义的符号变量。

    对于一般的程序设计软件如 C, C + + 等语言实现数值计算还可以 , 但是实现符号计算并不是一件容易的事。

    而 Matlab 自带有符号工具箱 Symbolic Math Tooibox , 而且可以借助数学软件 Maple, 所以 Matlab 也具有强大的符号运算功能。

    一、 字符串的定义MATLAB 用单引号来定义字符串。

    例如在指令窗口输入:A= 'hello, this is a string' ,则会输出 A=hello, this is a string二、 定义符号变量与符号表达式在 MATLAB 指令窗口,输入的数值变量必须提前赋值,否则会提示出错。

    只有符号变量可以在没有提前赋值的情况下合法地出现在表达式中,但是符号变量必须预先定义。

    在 Matlab 的数据类型中 , 字符型与符号型是两种重要而又容易混淆的数据类型。

    符号变量是利用指令 sym 和 syms 来创建 .它们的使用格式为 :S = sym ′ A ′ 定义单个符号变量 Ssyms a b c 定义多个符号变量 a, b, csyms 命令的使用要比 sym 简便 , 它一次可以定义多个符号变量 , 而且格式简练。

    因此一般用 syms 来创建符号变量。

    注意各符号变量之间必须是空格隔开。

    语句 Syms x y z w表示将 x,y,z 和 w 定义为符号变量。

    如果再输入: p=sin(x)+cos+z+2*w, 是执行后 P 就表示表达式 sin(x)+cos(x)+z+2*w三、 将数值表达式转换为符号表达式命令 sym 可将数值表达式转成符号表达式,其语法为:Sym' 数值表达式 '例如,在指令窗口输入:P=sym('2+sqrt(5)')则得到输出:P=2+sqrt(5) ,此时P是一个符号表达式,而不是一个数值表达式。

    四、 计算符号表达式的值如果要计算前面的符号表达式P的值,则需要用 eval_r(P) 来计算P的近似值。

    即可输入:eval_r(P)得到输出: ans=4.2361由于 P=sym('2+sqrt(5)' 实际上是一个符号常数,所以也可以用 vpa 命令计算。

    五、数值变量、符号变量、字符变量的相互转化数值变量、符号变量、字符变量的相互转化在 Matlab 工作空间中 , 数值、符号和字符是 3 种主要的数据类型。

    Matlab 可以利用命令来实现不同类型数据间的转换。

    问题推荐

    展开全文
  • 转载自:...handle = @(arglist)anonymous_function其中handle为调用匿名函数时使用的名字。arglist为匿名函数的输入参数,可以是一个,也可以是多个,用逗号分隔。anonymous_function为匿名函...

    转载自:http://blog.sina.com.cn/s/blog_71fb42f70100uyfx.html#commonComment

    1.匿名函数的基本用法。

    handle = @(arglist)anonymous_function

    其中handle为调用匿名函数时使用的名字。arglist为匿名函数的输入参数,可以是一个,也可以是多个,用逗号分隔。anonymous_function为匿名函数的表达式。举个例子如下:

    >> f=@(x,y)x^2+y^2;

    >> f(1,2)

    ans =  5

    当然输入的是数组也是可以的:

    >> f=@(x,y)x.^2+y.^2;

    %注意需要点(.)运算

    >> a=1:1:10;

    >> b=10:-1:1;

    >> f(a,b)

    ans =    101    85    73    65    61    61    65    73    85   101

    匿名函数的表达式中也可以有参数的传递,比如:

    >> a=1:5;

    >> b=5:-1:1;

    >> c=0.1:0.1:0.5;

    >> f=@(x,y)x.^2+y.^2+c;

    >> f(a,b)

    ans =    26.1000   20.2000   18.3000   20.4000   26.5000

    c作为表达式中的参数,进行了数据传递。上面都是单重匿名函数,也可以构造多重匿名函数,如:

    >> f=@(x,y)@(a) x^2+y^+a;

    >> f1=f(2,3)

    f1 = @(a)x^2+y^+a

    >> f2=f1(4)

    f2 =   85

    每个@后的参数从它后面开始起作用,一直到表达式的最后。

    2.使用匿名函数实现符号函数的赋值运算 在老版本的Matlab中,这个功能是由inline函数完成的,现在用匿名函数完成此功能。比如:知道z=2x^3+4x+5,求z在x=3处的2阶导数值。可以先用符号函数算出z的2阶导数的表达式,然后通过匿名函数,把x赋予3的值,得到最后结果: >> syms x; %定义符号变量  >> z=2*x^3+4*x+5; %定义表达式  >> z1=diff(z,2) %求z的2阶导数的表达式  z1 = 12*x  >> z2=eval(['@(x)' vectorize(z1)]); %vectorize函数的功能是使内联函数适合数组运算的法则  >> z2(3)  ans = 36

    展开全文
  • 匿名函数MATLAB7.0以后引入的新概念,可以用其来替代以往各种的函数,尤其是复杂函数的表达形式。例如,对于一个复杂函数 y=f(x),倘若f(x)的表达式非常复杂,在后续代码中,调用这个函数的时候,只需要用y(1)即可...
  • Matlab匿名函数(@(var1,...)表达式

    千次阅读 2020-01-12 20:56:11
    Matlab构建匿名函数(@(var1,...)表达式)。
  • 原创,转载请注明出处……(不注明也拿你没办法)内联函数内联(inline)函数MATLAB7以前经常使用的一种构造函数对象的方法。在命令窗口、程序或函数中创建局部函数时,通过使用inline构造函数,而不用将其储存为一个M...
  • matlab @匿名函数

    万次阅读 多人点赞 2018-12-13 22:23:29
    匿名函数 什么是匿名函数匿名函数是不存储在程序文件中、但与数据类型是 function_handle 的变量相关的函数。匿名函数可以接受输入并返回输出,就像标准函数一样。但是,它们可能只包含一个可执行语句。 ...
  • MATLAB匿名函数

    千次阅读 2017-09-19 22:31:51
    匿名函数的基本定义fhandle=@(arglist)expr其中,expr是具体的函数表达式,arglist是指定的函数自变量。具体请见下面示例f=@(x)x.^2; >> fx=f(1:10) fx = 1 4 9 16 25 36 49 64 81 100 >> g=@(x,y)x.^2+y.^2; >> gxy...
  • sym2fun基于符号参数的矢量表示将符号表达式转换为匿名函数。 句法f = sym2fun(fsym, vars, symVec1, repVec1, ..., symVecN, repVecN) 描述f = sym2fun( __ ) 将符号语句 fsym 转换为匿名函数句柄 f,其输入参数列...
  • 这是第 2 篇,从定义和应用两个角度来对比 Python 的匿名函数 与 C# 的Lambda表达式匿名函数/Lambda表达式的定义 Python 匿名函数 在 Python 里有两类函数: 第一类:用 def 关键词定义的正规函数 第二类:用 ...
  • matlab匿名函数

    千次阅读 2019-01-19 21:09:08
    匿名函数 匿名函数 什么是匿名函数匿名函数是不存储在程序文件中、但与数据类型是 function_handle 的变量相关的函数。匿名函数可以接受输入并返回输出,就像标准函数一样。但是,它们可能只包含一个可执行语句。...
  • MATLAB 匿名函数详解(超级全面)

    千次阅读 2021-03-04 19:14:00
    本篇文章主要讲解MATLAB 匿名函数的一些基础的及独特的用法: 目录1 匿名函数的生成1.1基础生成1.2 多参数匿名函数1.3 含定参匿名函数1.4 sym转匿名函数1.5 字符串转匿名函数1.6 函数工厂(匿名函数的自动生成)...
  • 今天,我们一起来学习基本绘图常用函数。在MATLAB中绘图首先需要设定x的范围,一般使用冒号来创建向量。例如 x = 0:pi/100:pi; &x 为0到pi之间以pi/100为步长的向量。(1) plot()二维图形的绘制要求:x和y需要有...
  • MATLAB匿名函数的应用3

    2017-09-20 11:14:42
    匿名函数在求积分区域方面的应用有的时候,需要根据已知的积分值和被积函数求对应的积分区域,当被积分函数表达式不是很复杂的时候,用匿名函数比较合适。
  • matlab 匿名函数

    2017-11-18 13:57:10
    匿名函数(anonymous function)是MATLAB 7.0版提出的一种全新的函数描述形式,和内联函数类似,可以让用户编写简单的函数而不需要创建M文件,因此,匿名函数具有inline函数的所有优点,并且效率比inline函数高,...
  • anonymous_function为匿名函数表达式。 举个例子如下: >> f=@(x,y)x^2+y^2; >> f(1,2) ans = 5 当然输入的是数组也是可以的: >> f=@(x,y)x.^2+y.^2; %注意需要点(.)运算
  • matlab匿名函数

    千次阅读 2020-03-26 16:39:54
    匿名函数通常是很简单的函数,他是面向命令行代码的函数,通常只由一句简单的声明语句组成 匿名函数也可以接受多个输入和输出参数。使用匿名函数的优点是不需要维护一个M文件,而只需要一句非常简单的语句,就可以在...
  • MATLAB匿名函数的应用4

    2017-09-20 15:08:36
    匿名函数和符号计算的结合有时候需要推导一些表达式,而对得到的表达式进行诸如求值、积分或者极值的运算。如果表达式不是很复杂的话,可以手动推导。但是很多时候手动推导非常烦琐甚至根本不可能,这时候就要借助...
  • 匿名函数 Matlab7.0 以上版本开始引入匿名函数它可以 内 函数所 有功能而且代 更 捷高效 匿名函数的主要功能 1可以代替将函数 写 独的 m-文件 2可以 符号函数的 运算 3很方便地 含参 量函数 行操作 一基本 法 f=...
  • MATLAB --- 匿名函数

    2021-01-01 06:24:31
    f = @(x,y)x+y; f(1,2) ans = 3 函数 f 有2个变量x和y 且f(x,y)=x+y MATLAB的这个匿名函数@可以理解为类似Python的lambda表达式 @ <=> lambada
  • sin是matlab中的一个函数,但sin只是函数名,还不是函数句柄,不可以用于传参。 f = @sin; % 这行代码定义了一个函数句柄,变量名是f。这样就可以当做参数传递了(这就是上面代码中的意义所在),而且还可以跟sin...
  • https://blog.csdn.net/weixin_30838873/article/details/99976437

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,052
精华内容 420
关键字:

匿名函数matlab的表达式

matlab 订阅