博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
arrayfun用法(转)
阅读量:5092 次
发布时间:2019-06-13

本文共 1217 字,大约阅读时间需要 4 分钟。

利用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 =
     1     4
     9    16
复制代码
例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 =
     1     4
     9    16
复制代码
例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 =
     6     6    14
     3     3    11
复制代码
C2=num2cell(A)是把A中的每一个元素作为cell的元素,这样每个元素是一个数;C2=num2cell(A,1)是把矩阵A的每一列作为cell的元素,这样cell的每个元素是一个列向量。同样的还有C2=num2cell(A,2)表示把A中的每一行作为一个cell元素

转载于:https://www.cnblogs.com/aminxu/p/4686615.html

你可能感兴趣的文章
[Data Structure & Algorithm] 有向无环图的拓扑排序及关键路径
查看>>
C/C++函数调用方式
查看>>
序列化
查看>>
git 常用命令
查看>>
iis 下的 selfssl
查看>>
什么样的公司卖什么货!
查看>>
cassandra vs mongo (1)存储引擎
查看>>
[原创]BizTalk 开发系列
查看>>
Action中动态方法的调用 Action中通配符的使用 Result的配置
查看>>
uva10382
查看>>
Visual Studio基于CMake配置opencv1.0.0、opencv2.2
查看>>
常见编程语言入口特征
查看>>
[Leetcode 94] 72 Binary Tree Inorder Traversal
查看>>
Vue音乐项目笔记(三)
查看>>
遍历Map对象
查看>>
计算剪贴板里仿制的代码行数
查看>>
YTU 2578: 分数减法——结构体
查看>>
MySQL索引背后的数据结构及算法原理
查看>>
Ansible条件测试
查看>>
面向对象程序设计 作业一
查看>>