bsxfun:

C = bsxfun(fun,A,B)

bsxfun可以对矩阵A和矩阵B进行对应元素的fun函数操作。其中,fun是任何标量输入输出的二元操作的函数,例如基本的加减乘除,三角函数,大小比较,以及其他任何符合条件的自定义函数。

C =

bsxfun(fun,A,B) applies the element-by-element

binary operation specified by the function

handle funto

arrays A and B,

with singleton expansion

enabled. fun can be one of the

following built-in functions:

@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 degrees

@hypot

Square root of sum of

squares

@eq

Equal

@ne

Not equal

@lt

Less than

@le

Less than or equal to

@gt

Greater than

@ge

Greater than or equal

to

@and

Element-wise logical

AND

@or

Element-wise logical

OR

@xor

Logical exclusive OR

注意,fun不能是符号,例如+,*之类,这些符号都有对应的函数名。例如+ 对应

plus, >= 对应 ge,等等。

一般来说,如果两个矩阵一样大,我们可以直接通过 A+B

这样的方式一样实现,但是bsxfun有一个优点,就是当A,B中任何一维长度为1的时候,函数会自动将该维度和另一个矩阵对应维度的每一行(列)进行运算。如果我们自己进行这样的操作,我们或者要使用循环,或者要使用repmat来扩展矩阵,这都比bsxfun在底层内部实现慢很多,或者要消耗更多内存。

注意:A,B的维数必须要么相等,要么为1.

当其中一个元素的维数=1时,系统自动将其扩展为另一元素的维数

The corresponding dimensions

of A and B must

be equal to each other or equal to one. Whenever a dimension

of A or B is

singleton (equal to

one), bsxfun virtually replicates

the array along that dimension to match the other array. In the

case where a dimension

of A or B is

singleton, and the corresponding dimension in the other array is

zero, bsxfun virtually diminishes

the singleton dimension to zero.

The size of the output

array C is equal to:

max(size(A),size(B)).*(size(A)>0 &

size(B)>0).

For example:如何将一个矩阵的每行或每列元素分别扩大不同的倍数?如[1

2 3;4 5 6 ;7 8 9],第一列元素乘以1,第二列元素以2,第三列元素乘以4。

利用bsxfun函数,可以给出下列代码:

a = [1,2,3;

4,5,6;

7,8,9];

acol = bsxfun(@times,a,[1 2 4])

此处bsxfun函数将[1 2 4]扩展为3*3矩阵[1

2 4;1

2 4;1

2 4],每个元素与a中对应元素相乘。得到

[1  4

12

4  10

24

7  16

36]

[转]Matlab:用内建函数代替for循环_cairo_新浪博客

http://blog.sina.com.cn/s/blog_83b901bd0101ea8l.html

[转载]matlab学习笔记  函数bsxfun

repmat_yoki_新浪博客

http://blog.sina.com.cn/s/blog_780976a001012m0a.html

********************************************************************************************

arrayfun:

Apply function to each element of array

[B1,...,Bm] =

arrayfun(func,A1,...,An)

[B1,...,Bm] =

arrayfun(func,A1,...,An,Name,Value)

利用arrayfun函数可以避免无谓的循环,从而大大提高代码的简介性。

1、A=ARRAYFUN(FUN, B)

FUN是函数句柄,对B中的每一个元素调用FUN函数(计算顺序随意),结果存放于A中,size(A)==size(B)

FUN函数可接受numeric, logical, char, struct,

cell的自变量类型。

2、[A, B, ...] = ARRAYFUN(FUN, C, ...)

FUN函数的返回值是一个向量,对B中的每一个元素调用FUN函数,计算结果放在A,B…中。

3、 A = ARRAYFUN(FUN, B, C,...)

FUN函数接受参数不唯一,分别调用B, C,...中的元素,A(i,j...)=Fun(B(i,j...),C(i,j,...)...),

B,C...大小必须相等。

例1、Fun调用B中的一个数值

>> s=[1 2;3 4];

>> f=@(x) x^2;

>> arrayfun(f,s)

ans =

14

916

例2、Fun的接受参数是一个向量

>> ss=num2cell(s,2);

>> f=@(x) sum(x{:}.^2);

>> arrayfun(f,ss)

ans =

5

25

例3、Fun函数返回值是向量

>> F=@(x) x{:}.^2;

>>

cell2mat(arrayfun(F,ss,'UniformOutput',false))

ans =

14

916

例4、Fun函数参数不唯一

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

>> [X,Y]=meshgrid(-2:2,-1:5);

>> Z=arrayfun(f,X,Y);

>> mesh(X,Y,Z)

例5、Fun函数的参数不唯一,而且都是向量

>>

F=@(f,h)sum(diff(f{:}).^2)+sum(diff(h{:}).^2);

>> f=[1,2,3;3,4,5;1,2,5];

>> h=[2,4;4,5;];

>> ff=num2cell(f,2);

>> hh=num2cell(h,2);

>> fff=repmat(ff',length(hh),1);

>> hhh=repmat(hh,1,length(ff));

>> arrayfun(F,fff,hhh)

ans =

6614

3311

C2=num2cell(A)是把A中的每一个元素作为cell的元素,这样每个元素是一个数;C2=num2cell(A,1)是把矩阵A的每一列作为cell的元素,这样cell的每个元素是一个列向量。同样的还有C2=num2cell(A,2)表示把A中的每一行作为一个cell元素

转自:

arrayfun用法_2096428102_新浪博客

http://blog.sina.com.cn/s/blog_7cf4f4460101bnhh.html

********************************************************************************************

cellfun:

1

2

[A1,...,Am] = cellfun(func,C1,...,Cn)

[A1,...,Am] = cellfun(func,C1,...,Cn,Name,Value)

和arrayfun的用法类似,不过是对cell的对应元素进行操作。

structfun:

1

2

[A1,...,An] =

structfun(func,S)

[A1,...,An] =

structfun(func,S,Name,Value)

类似的用法,对结构体S的所有域进行func操作。

spfun:

1

f = spfun(fun,S)

这个函数可以对一个稀疏矩阵S的每个有值的元素进行fun操作。

这个函数的用途不仅仅是可以提升速度,更重要的是能够保持返回的f中,没有数据的地方依然为0.

例如:

1

2

S = spdiags([1:4]',0,4,4)

f = spfun(@exp,S)

S =

(1,1) 1

(2,2) 2

(3,3) 3

(4,4) 4

f =

(1,1) 2.7183

(2,2) 7.3891

(3,3) 20.0855

(4,4) 54.5982

而直接运行

1

exp(S)

的话,没有数据的地方都变成1了。

1

full(exp(S))

ans =

2.7183 1.0000 1.0000 1.0000

1.0000 7.3891 1.0000 1.0000

1.0000 1.0000 20.0855 1.0000

1.0000 1.0000 1.0000 54.5982

matlab bsxfun memory,[转]matlab函数 bsxfunarrayfun相关推荐

  1. matlab bsxfun memory,matlab函数bsxfun浅谈(转载)

    网上关于bsxfun的东西不多,今天需要看到一个,由于原博文插入的图片显示不出来,于是笔者大发善心进行了contrl+V 以及alt+ctrl+A的操作,供大家交流学习. bsxfun是一个matla ...

  2. matlab bsxfun memory,matlab之bsxfun函数

    简单的调用方法: bsxfun(@plus,A,B),其中@plus代表的是加法,还可以换成减法@minus,乘法@times等,可以参考matlab里面的帮助文档,对着bsxfun按F1即可. 有何 ...

  3. matlab bsxfun memory,matlab – BSXFUN关于关系操作的内存效率

    简介&测试设置 要执行内存测试以查询问题中提出的点,让我们定义输入A和B: A = rand(M,N) B = rand(1,N) 这里,M和N是大小参数,并保持为非常大的数字. 我会使用re ...

  4. Matlab bsxfun函数解析

    bsxfun是一个matlab自版本R2007a来就提供的一个函数,作用是"applies an element-by-element binary operation to arrays ...

  5. Matlab bsxfun函数

    bsxfun 两个数组间元素逐个计算. 语法: C=bsxfun(fun,A,B) 函数描述: 两个数组间元素逐个计算,fun是函数句柄或者m文件,也可以为如下内置函数 @plus           ...

  6. matlab中trapz,MATLAB中trapz和cumtrapz函数

    这两个函数都是MATLAB中的内置函数,是基于梯形法则的数值积分公式 例如我们有函数y=x^3-2x-3,为了计算在[0,1]上的积分,可以这么做: 其中x和y分别是自变量和对应的值,trapz其实就 ...

  7. 23. matlab并行计算原理以及parpool函数

     声明: 因电脑问题, 只做记录,以后尝试. 出处: Matlab并行运算 - wenyusuran的专栏 - CSDN博客 https://blog.csdn.net/wenyusuran/arti ...

  8. matlab中非0即1函数,matlab 中统计一个数组中非零元素个素的函数名称是什么?

    可以自己写一个函数用来给数组排序.或者用MATLAB自带的 Matlab 用sort函数排序 二维数组2008-09-14 22:51在Matlab中排序某个向量(一维)时,可以使用sort(A),其 ...

  9. matlab的guide怎么添加函数,整理:matlab如何添加m_map工具箱

    之前安装过m_map工具箱但是一直出错,错误信息的主要内容是关于'没能找到目录下的函数文件',试了很长时间,发现原来是安装位置出现了问题,之前是安装在了'\toolbox\m_map',所以出错了,下 ...

最新文章

  1. Copy GAC DLL
  2. 算法入门开灯问题,新做法
  3. ARM硬件支持java技术Jazelle DBX
  4. QT Openssl no OPENSSL_Applink 解决
  5. Can't process attribute android:fillColor=@color/gray,添加vector属性报错解决方法
  6. 【干货】快速部署微软开源GPU管理利器: OpenPAI
  7. 这 5 条 IntelliJ IDEA 调试技巧太强了!
  8. 博图买什么样配置的笔记本_3dsmax需要什么样的笔记本配置?
  9. BAT 数据披露:缺人!110万AI人才缺口,两者矛盾,凉凉了!
  10. webapi mvc 基础
  11. Python - matplotlib 不显示中文 findfont: Font family [‘SimHei‘] not found - IOS
  12. sql与hsql的区别以及分别怎么用!
  13. 企业微信开发整理汇总
  14. mac修改eclipse的内存配置
  15. 电脑ping手机该怎么玩(很多网友都说电脑ping不通手机)
  16. 红​字​和​蓝​字​冲​销(红字冲正、蓝字冲正)
  17. sCrypt 合约中的椭圆曲线算法:第二部分
  18. pandas把一个excel的特定数据写到另一个excel_Python读写Excel文件第三方库汇总,你想要的都在这儿!...
  19. charles+Proxifier实现抓包pc端(exe程序)
  20. Speedoffice(PPT)如何做动画演示效果

热门文章

  1. 利用Echarts制作地图(一)
  2. 身份认证技术的产业发展
  3. vscode之 wget下载文件报错:ERROR: cannot verify data.vision.ee.ethz.ch‘s certificate
  4. 详解网络爬虫:网络爬虫是干什么的?有哪些应用场景?
  5. (数据库系统)(十二)故障恢复
  6. win10下如何使用的debug
  7. 天河三号是量子计算机吗,“天河三号”原型机亮相,排名有望继续世界第一
  8. IPV6 DHCPV6 和 无状态 分配地址
  9. 机器学习如何驱动业务实践?你想知道的都在这!
  10. word2vec(2) 背景知识