Matlab arrayfun 使用

http://www.ilovematlab.cn/thread-93830-1-1.html

 

利用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中的一个数值

  1. >> s=[1 2;3 4];
  2. >> f=@(x) x^2;
  3. >> arrayfun(f,s)
  4. ans =
  5.      1     4
  6.      9    16
复制代码
例2、Fun的接受参数是一个向量

  1. >> ss=num2cell(s,2);
  2. >> f=@(x) sum(x{:}.^2);
  3. >> arrayfun(f,ss)
  4. ans =
  5.      5
  6.     25
复制代码
例3、Fun函数返回值是向量

  1. >> F=@(x) x{:}.^2;
  2. >> cell2mat(arrayfun(F,ss,'UniformOutput',false))
  3. ans =
  4.      1     4
  5.      9    16
复制代码
例4、Fun函数参数不唯一

  1. >> f=@(x,y) x^2+y^2;
  2. >> [X,Y]=meshgrid(-2:2,-1:5);
  3. >> Z=arrayfun(f,X,Y);
  4. >> mesh(X,Y,Z)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值