Matlab高级教程_第四篇:Matlab高级函数_关键词:arrayfun
% 定义一个句柄并用这个句柄求值
h = @sin;
h(3)
% % 命令窗口返回内容
% h(3)
% ans =
% 0.1411 %定义一个完整句柄,@参数+表达式的形式,并给句柄传参
h1 = @(x)mean(x);
x = [1 2 3 4 5];
h1(x)
% % 命令窗口返回内容
% h1(x)
% ans =
% 3 %arrayfun的简单应用
h1 = @(x)mean(x);
x = [1 2 3 4 5];
% 可以用句柄的形式传入第一个形参位置,也可以直接@句柄内容,这两个是等价的
arrayfun(@(x)mean(x),x)
arrayfun(h1,x)
% % 命令窗口返回内容
% ans =
% 1 2 3 4 5
% ans =
% 1 2 3 4 5 %arrayfun对Name,value的要求(只举例格式化形式'UniformOutput')
x = [1 2 3 4 5];
% 如果选择为false以元胞的形式返回值
arrayfun(@(x)mean(x),x,'UniformOutput',false)
% 如果选择为true以数组的形式返回值
arrayfun(@(x)mean(x),x,'UniformOutput',true)
% % 命令窗口返回内容
% ans =
% 1×5 cell 数组
% {[1]} {[2]} {[3]} {[4]} {[5]}
% ans =
% 1 2 3 4 5 % arrayfun对于提升运算效率的帮助
% 不采用arrayfun形式的运算
tic;
x = magic(3000)*magic(3000);
toc;
% 时间已过 3.125284 秒。 % 采用arrayfun形式的运算
tic;
arrayfun(@(n)magic(n)*magic(n),3000,'UniformOutput',false);
toc;
% 时间已过 3.125284 秒。
我们分采用运算的时候,第二遍比第一遍快,主要是MATLAB的内存预分配机制。
注意采用arrayfun值是标量形式必须选择false
arrayfun主要是为了打开并行运算库而设计
我们打开并行运算
% arrayfun对于提升运算效率的帮助
% 不采用arrayfun形式的运算
tic;
x = magic(5000)*magic(5000);
toc;
% 时间已过 14.077466 秒。 % 采用arrayfun形式的运算
tic;
arrayfun(@(n)magic(n)*magic(n),5000,'UniformOutput',false);
toc;
% 时间已过 13.423996 秒。
我们发现运算效率提升不太明显,因为arrayfun针对标量的运算方式,如果对于像魔方矩阵,可以用meshgrid分解的方式提升更明显
Matlab高级教程_第四篇:Matlab高级函数_关键词:arrayfun的更多相关文章
- Matlab高级教程_第四篇:Matlab高级函数_关键词:drawnow,addpoints,animatedline,getpoints
0. MATLAB真实航母基本的工具,其中的函数/工具不计其数,而且有些函数/工具非常的炫酷.在MATLAB第四篇章把平时工作中用到的些许函数进行使用的讲解 主题1.:drawnow 解释:更新图窗并 ...
- Matlab高级教程_第四篇:白噪声的MATALB生成方式
1. 白噪声主要是高斯白噪声. 2. 为什么是高斯白噪声? 高斯白噪声:1)这个噪声它是一个随机信号.2)“白”是指其功率谱的常数,这样他的自相关函数是狄拉克函数(冲激函数),由于它的自相关函数是冲激 ...
- Python笔记_第四篇_高阶编程_进程、线程、协程_5.GPU加速
Numba:高性能计算的高生产率 在这篇文章中,笔者将向你介绍一个来自Anaconda的Python编译器Numba,它可以在CUDA-capable GPU或多核cpu上编译Python代码.Pyt ...
- 微信小程序教程(第四篇)
小程序开发基本框架及其限制与优化 开发基本框架(MINA框架) └─ Project-folder/ ·································· 项目所在目录 ├─ page ...
- (转) SpringBoot非官方教程 | 第二十四篇: springboot整合docker
这篇文篇介绍,怎么为 springboot程序构建一个Docker镜像.docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源.Docker 可以让开发者打包他们的 ...
- SpringBoot非官方教程 | 第二十四篇: springboot整合docker
转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springboot24-docker/ 本文出自方志朋的博客 这篇文 ...
- 史上最简单的 SpringCloud 教程 | 第十四篇: 服务注册(consul)
转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springcloud/2017/07/12/sc14-consul/ 本文出自方志朋的博客 这篇文章主要介绍 s ...
- Python笔记_第四篇_高阶编程_再议装饰器和再议内置函数
1. 概述: 我们在前面用了很多的装饰器这个工具的方法.这个位置要系统的讲一下装饰器. 1.2 为什么需要装饰器. 装饰器本质是一个Python函数,它可以让其他函数在不需要任何代码变动的前提下增加额 ...
- Python笔记_第四篇_高阶编程_实例化方法、静态方法、类方法和属性方法概念的解析。
1.先叙述静态方法: 我们知道Python调用类的方法的时候都要进行一个实例化的处理.在面向对象中,一把存在静态类,静态方法,动态类.动态方法等乱七八糟的这么一些叫法.其实这些东西看起来抽象,但是很好 ...
随机推荐
- sprngmvc+restFul 请求报错:404
服务端代码 control类 @RequestMapping(value="getUser",method = RequestMethod.POST) @ResponseBody ...
- SOA--基于银行系统实例分析
阅读以下关于 Web 系统设计的叙述 [说明] 某银行拟将以分行为主体的银行信息系统,全面整合为由总行统一管理维护的银行信息系统,实现统一的用户账户管理.转账汇款.自助缴费.理财投资.贷款管理.网上支 ...
- Maccms后门分析复现(并非官网的Maccms){10.15 第二十二天}
该复现参考网络中的文章,该漏洞复现仅仅是为了学习交流,严禁非法使用!!!! Maccms官网:http://www.maccms.cn/ Maccms网站基于PHP+MYSQL的系统,易用性.功能良好 ...
- 基础语法-for循环的嵌套
基础语法-for循环的嵌套 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.for循环嵌套概述 说白了就是在for循环中再嵌套一层for循环. 二.for循环嵌套案例 1> ...
- windows LARGE_INTEGER 错误码输出格式
如果是负数,I32X 版权声明:本文为博主原创文章,未经博主允许不得转载.
- c++ 字符串转数字或数字转字符串
在C++中字符串转换为数字,或数字转换为字符串,用到如下函数: _itoa atoi.atof.itoa.itow _itoa_s 1.整形转换为字符串: wchar_t * _itot(int _V ...
- springmvc的InternalResourceViewResolver自我理解
原文链接:https://blog.csdn.net/wwzuizz/article/details/78268007 它的作用是在Controller返回的时候进行解析视图 @RequestMapp ...
- Docker部署NETCORE应用程序
Docker部署NETCORE应用程序 创建.netcore项目,本文以ASP.NET Core2.2 版本为例 设置Dockerfile属性始终复制 编辑Dockerfile内容 FROM micr ...
- 从架构师视角看是否该用Kotlin做服务端开发?
前言 自从Oracle收购Sun之后,对Java收费或加强控制的尝试从未间断,谷歌与Oracle围绕Java API的官司也跌宕起伏.虽然Oracle只是针对Oracle JDK8的升级收费,并释放了 ...
- Linux基础(1) 安装
Linux基础 一.创建CentOS 7 Linux虚拟机 1.安装虚拟机 桥接网络:相当于这台机器就是物理机,多个电脑在连接在一个交换机上,同一个子网 NAT:这台机器只能通过物理机(相当于 ...