爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 5739|回复: 3

[程序设计] 什么函数可以取代for循环而进行向量化运算?

[复制链接]

新浪微博达人勋

发表于 2020-5-4 14:54:58 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
请教两个问题:
(1)有n个矩阵,每个矩阵都需要输入同一个FUN函数进行运算,请问,除了循环语句之外,什么函数可对n个矩阵同时操作,进行向量化运算?
(2)有n个矩阵,每个矩阵都需输入不同的 FUN 函数,也就是说 n 个矩阵对应 n 个 FUN 函数,但这n个函数类型相同,只是参数不同,比如n个函数都是正态分布函数,只是参数不同。。这种情况下,matlab有什么函数可以取代循环计算而进行向量化运算?


换言之,matlab有没有像R语言中 apply、mapply之类的函数?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2020-5-4 20:39:28 | 显示全部楼层
%比如有a1,...a5五个矩阵,将它们合并为三维数组
A=cat(3,a1,a2,a3,a4,a5);

%固定的fun作用于大矩阵。如果fun返回的结果不是标量,则需要'uni',0选项
res=arrayfun(@(k) fun(A(:,:,k)), 1:5, 'uni', 0);


%如果fun需要可变的参数
params=[0.1,0.2,0.3,0.4,0.5];
res=arrayfun(@(k) fun(A(:,:,k), params(k)), 1:5, 'uni', 0);
密码修改失败请联系微信:mofangbao
回复 支持 2 反对 0

使用道具 举报

新浪微博达人勋

 成长值: 32430
发表于 2020-5-4 15:54:15 | 显示全部楼层
初步了解了一下r语言的apply函数,暂时感觉matlab内好像确实没有能够与之匹配的函数(也有可能是我还没发现)。如果楼主感觉for不能满足你的要求,可以试一下parfor提高一下效率。也可以考虑在matlab中调用r语言来实现此项功能。

评分

参与人数 1金钱 +6 贡献 +1 收起 理由
翻身仗 + 6 + 1 感谢!

查看全部评分

密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-5-5 06:30:53 | 显示全部楼层
jstzysq 发表于 2020-5-4 20:39
%比如有a1,...a5五个矩阵,将它们合并为三维数组
A=cat(3,a1,a2,a3,a4,a5);

非常感谢您的指点
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表