Matlab 中 arrayfun用法

您所在的位置:网站首页 matlab的arrayfun函数 Matlab 中 arrayfun用法

Matlab 中 arrayfun用法

2024-07-10 03:46| 来源: 网络整理| 查看: 265

Matlab 中 arrayfun用法 原创

荪荪 2021-07-09 18:14:02 ©著作权

文章标签 MATLAB matlab 文章分类 人工智能

©著作权归作者所有:来自51CTO博客作者荪荪的原创作品,请联系作者获取转载授权,否则将追究法律责任 

http://blog.sina.com.cn/s/blog_7cf4f4460101bnhh.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中的一个数值 >> 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元素 收藏 评论 分享 举报

上一篇:Matlab:用内建函数代替for循环

下一篇:Matlab图像处理中uint8和double的问题



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3