一、匿名函数/Anonymous Function

匿名函数matlab解释:

FUNHANDLE = @FUNCTION_NAME returns a handle to the named function, FUNCTION_NAME. A function handle is a MATLAB value that provides a means of calling a function indirectly. You can pass function handles in calls to other functions (which are often called function functions). You can also store function handles in data structures for later use (for example, as Handle Graphics callbacks). A function handle is one of the standard MATLAB data types. Its class is 'function_handle'.FUNHANDLE = @(ARGLIST)EXPRESSION constructs an anonymous function and returns a handle to that function. The body of the function, to the right of the parentheses, is a single MATLAB expression. ARGLIST is a comma-separated list of input arguments. Execute the function by calling it by means of the returned function handle, FUNHANDLE. For more information on anonymous functions, see "Types of Functions" in the MATLAB Programming documentation.To call the function referred to by a function handle value, use ordinary parenthesis notation.  That is, specify the function handle variable followed by a comma-separated list of input arguments enclosed in parentheses. For example, HANDLE(ARG1, ARG2, ...). To call a function_handle with no arguments, use empty parenthesis, e.g.,
HANDLE().

翻译:

FUNHANDLE = @FUNCTION_NAME返回命名函数FUNCTION_NAME的句柄。函数句柄是MATLAB值,提供了一种间接调用函数的方法。您可以在对其他函数的调用中传递函数句柄(通常称为函数函数)。您还可以将函数句柄存储在数据结构中,以供以后使用(例如,作为Handle Graphics回调)。函数句柄是标准MATLAB数据类型之一。它的类是“ function_handle”。
      FUNHANDLE = @(ARGLIST)EXPRESSION构造一个匿名函数并返回该函数的句柄。函数主体(在括号的右边)是单个MATLAB表达式。 ARGLIST是输入参数的逗号分隔列表。通过返回的函数句柄FUNHANDLE调用函数来执行该函数。有关匿名函数的更多信息,请参见MATLAB编程文档中的“函数类型”。
       要调用由函数句柄值引用的函数,请使用普通的括号表示法。也就是说,指定函数句柄变量,然后在括号中输入逗号分隔的输入参数列表。例如,HANDLE(ARG1,ARG2,...)。要调用不带参数的function_handle,请使用空括号,例如,HANDLE()

匿名函数是存储在程序文件中、但与数据类型是 function_handle 的变量相关的函数。匿名函数可以接受输入并返回输出,就像标准函数一样。但是,它们可能只包含一个可执行语句。

下面两种用法的区别在于 函数体的实现在于本处还是其他地方。

注意输入参数/arglist,在匿名函数之前无定义,也不影响使用,在定义后、调用时对输入参数赋值即可。

1、基本用法:

handle = @(arglist)anonymous_function
  • handle为调用匿名函数时使用的名字/函数句柄;
  • arglist为匿名函数的输入参数,可以是一个,也可以是多个,用逗号分隔;
  • anonymous_function为匿名函数的表达式/函数实现;

举例:

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

放一个具体实现例子:https://www.cnblogs.com/gshang/p/11663727.html

clc,clear,close all;% 定义匿名函数
K_RBF = @(x,xi,r) exp(-(x-xi).^2./(r.^2));% 设置变量取值范围
xi = -5:0.01:5;
x = zeros(size(xi));
r = [0.2;0.5;1.0;2.0]*ones(size(xi));% 画图基础设置
curveType = {'r-','b--','r-.','b-.'};
r_legend = {'r=0.2','r=0.5','r=1.0','r=2.0'};% 画取不同的 r 值下的函数
for i = 1:length(curveType)plot(xi,K_RBF(xi,x,r(i,:)),curveType{i},'linewidth',2);hold on
end% 设置图像参数
set(gca,'fontsize',24),set(gcf,'outerposition',get(0,'screensize'));
legend(r_legend),xlabel('x_i'),ylabel('核函数值K(x,x_i)');
title('RBF核函数在测试点 x=0 处的映射关系');% 保存图像
print(gcf,'-djpeg','-r300','RBF核函数在测试点 x=0 处的映射关系');

2、基本用法:

handle = @(arglist)anonymous_function

  • handle为调用匿名函数时使用的名字/函数句柄;
  • arglist为匿名函数的输入参数,可以是一个,也可以是多个,用逗号分隔;
  • anonymous_function为匿名函数的函数名/类比普通函数;

举例:

f = @(X) ConstantVelocity(X, T);

其中:ConstantVelocity(X, T)函数实现如下:

% Constant Velocity model for GPS navigation.
function [Val, Jacob] = ConstantVelocity(X, T)Val = zeros(size(X));
Val(1:2:end) = X(1:2:end) + T * X(2:2:end);
Val(2:2:end) = X(2:2:end);
Jacob = [1,T; 0,1];
Jacob = blkdiag(Jacob,Jacob,Jacob,Jacob);end

调用如下:

[Xp, ~] = f(Xi);%1

[~, fy] = f(Xp);%2

具体代码:extended Kalman Filter(EKF) for GPS

参考:

matlab @匿名函数

Matlab中的匿名函数的使用

Matlab匿名函数

二、bsxfun函数

函数调用形式1:

c = bsxfun(@~, A, B)

%               @plus           Plus 加
%               @minus          Minus 减
%               @times          Array multiply 乘
%               @rdivide        Right array divide 右除
%               @ldivide        Left array divide 左除
%               @power          Array power
%               @max            Binary maximum
%               @min            Binary minimum
%               @rem            Remainder after division
%               @mod            Modulus after division
%               @atan2         Four-quadrant inverse tangent; result in radians
%               @atan2d            Four-quadrant inverse tangent; result in dgrees
%               @hypot         Square root of sum of squares
%               @eq             Equal
%               @ne             Not equal
%               @lt             Less than
%               @le             Less than or equal
%               @gt             Greater than
%               @ge             Greater than or equal
%               @and            Element-wise logical AND
%               @or             Element-wise logical OR
%               @xor            Logical EXCLUSIVE OR

示例:

A=[3 2 1;3 2 1;3 2 1;];
B=[1;1;1;];
c = bsxfun(@plus, A, B)  %加法
d = bsxfun(@minus, A, B) %减法
e = bsxfun(@times, A, B) %乘法
f= bsxfun(@rdivide, A, B) %除法右除
g = bsxfun(@ldivide, A, B) %除法 左除

运行结果:

>> test_bsxfun

c =

4     3     2
     4     3     2
     4     3     2
d =

2     1     0
     2     1     0
     2     1     0
e =

3     2     1
     3     2     1
     3     2     1
f =

3     2     1
     3     2     1
     3     2     1
g =

0.333333333333333   0.500000000000000   1.000000000000000
   0.333333333333333   0.500000000000000   1.000000000000000
   0.333333333333333   0.500000000000000   1.000000000000000

函数调用形式2:

z = bsxfun(@(x, y) x.*sin(y), x, y);

其中,@(x,y)中为函数输入参数,x.*sin(y)为函数体;

与匿名函数一样,其区别在于bsxfun函数运行效率更高!

参考:

matlab函数 bsxfun浅谈(转载)

matlab中匿名(Anonymous)函数及bsxfun函数相关推荐

  1. 将函数当做参数 matlab,Matlab中如何将(自定义)函数作为参数传递给另一个函数...

    假如我们编写了一个积分通用程序,想使它更具有通用性,那么可以把被积函数也作为一个参数.在c/c++中,可以使用函数指针来实现上边的功能,在matlab中如何实现呢?使用函数句柄--这时类似于函数指针的 ...

  2. matlab中饼图绘制程序,MATLAB中绘制二维饼图的函数是(? ? ) (1.5分)

    MATLAB中绘制二维饼图的函数是(? ? ) (1.5分) 答:pie 计算机的内存储器比外存储器读写速度 ______ 答:快 新民主主义革命时期,提出了反帝反封建这个任务就等于真正懂得了什么叫反 ...

  3. MatLab中的多项式拟合(lsqcurvefit函数的非线性曲线拟合)

    MatLab中的多项式拟合(lsqcurvefit函数的非线性曲线拟合) lsqcurvefit函数 函数原型 x=lsqcurvefit(fun, x0, xdata, ydata) == 其中的参 ...

  4. matlab得到计算机时间,Matlab中处理日期与时间的函数

    Matlab用三种格式来表示日期与时间 (1)双精度型日期数字:一个日期型数字代表从公元0年到某一日期的的天数,例如,2008年8月26日夜时0点钟被表示为733646,而这同一天的中午12点就被表示 ...

  5. MatLab中rand randi randn 三个函数的解析

    MatLab中rand randi randn 三个函数的解析 1.rand 概括:生成(0,1)之间的均匀分布的伪随机数 示例1: >>rand %什么参数也没有,生成一个(0,1)的数 ...

  6. Matlab中一维和二维滤波函数及其典型用法【随时更新】

    Matlab中一维和二维滤波函数及其典型用法[随时更新] 一维滤波函数 均值滤波器movmean 中值滤波器movmedian 二维滤波函数 用fspecial预定义各种二维滤波器 主要用于自查,如果 ...

  7. matlab对数收益直方图,科学网—MATLAB中绘制数据直方图的新函数histogram2 - 王福昌的博文...

    MATLAB中有命令hist3() 可以绘制直方图,竖坐标是频数,这与一些教科书中用纵轴表示频率的做法不一致,有些时候不便于使用.当然,使用者可以自己编写定制能够在纵轴绘出频率的直方图.在MATLAB ...

  8. matlab中用于小数取整的函数的用法

    matlab中小数取整的函数大约有四个:floor.ceil.round.fix 若 A = [-2.0, -1.9, -1.55, -1.45, -1.1, 1.0, 1.1, 1.45, 1.55 ...

  9. matlab变量区表示函数,MATLAB中的工作区,变量和函数

    本文概述 工作空间 工作区包含我们在MATLAB中工作时创建的所有变量. 每当我们为变量分配值时, 它都会自动在工作空间中获取空间. 关闭环境后, 工作空间变量将消失, 因此请将这些变量保存在文件中以 ...

最新文章

  1. 【资源分享】The Beatles(披头士)乐队所有专辑带封面
  2. 【c语言】蓝桥杯算法训练 6-2递归求二进制表示位数
  3. 测试用例设计方法-错误推测法
  4. 链表list(链式存储结构实现)_VOL.2 如何在python中实现链式存储结构
  5. 神经风格迁移(Neural Style Transfer)程序实现(Keras)
  6. 拉勾启源老师mysql讲义,【拉勾教育数据分析实战训练营】--Tableau学习笔记-重点回顾1...
  7. sklearn的认识
  8. .net core 下的分布式事务锁
  9. s5pv210——nandflash和inand的基础理论
  10. vim安装时报错:Depends:vim-common (=2:7.4.1689-3ubuntu1.4) but 2:8.0.1453-1ubuntu1.1 is to be installed
  11. android java标准时间_Android 时间 日期 相关
  12. [转载] [SQL] patindex 详解
  13. Mac上运行windows,你还在用双系统or虚拟机?
  14. CentOS 6.4安装OpenOffice
  15. Luogu2279[HNOI2003] 消防局的设立
  16. java switch finally_Java中的switch疑问
  17. Android 实时数据库工具Database Inspector
  18. html5 省份热点图,javascript html5 canvas实现可拖动省份的中国地图
  19. 咖啡产地及如何鉴赏评价
  20. 音频转换成mp3,音频转mp3格式

热门文章

  1. 论文投稿指南——中文核心期刊推荐(新闻事业)
  2. Python自学笔记1(think python)
  3. 怎样合理有效的与人争论(讨论)问题?
  4. Eclipse(JavaEE)下载地址
  5. EBS 报表开发:标准报表Text输出改为XML输出
  6. 从零开始Android游戏编程(第二版) 目录
  7. ini文件格式和读取
  8. OPEN(SAP) UI5 学习入门系列之二: 最佳实践练习(上)
  9. win 10 caffe python=3.5 小白安装全过程(最详细,完美解决各种版本不兼容等问题)
  10. C++ 使用string的头文件和要求