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调用类的方法的时候都要进行一个实例化的处理.在面向对象中,一把存在静态类,静态方法,动态类.动态方法等乱七八糟的这么一些叫法.其实这些东西看起来抽象,但是很好 ...
随机推荐
- 【pwnable.kr】 flag
pwnable从入门到放弃 第四题 Download : http://pwnable.kr/bin/flag 下载下来的二进制文件,对着它一脸懵逼,题目中说是逆向题,这我哪会啊... 用ida打开看 ...
- 10 —— node —— 获取文件在前台遍历
思想 : 前台主动发起获取 => ajax 1,前台文件 index.html <!DOCTYPE html> <html lang="en"> &l ...
- oracle修改表名
alter table 原来表名 rename to 新表名
- JAVAEE 和项目开发(第四课:HTTP的响应格式和响应状态码)
HTTP 协议之响应 响应格式的结构: 响应行(状态行):HTTP 版本.状态码.状态消息 响应头:消息报头,客户端使用的附加信息 空行:响应头和响应实体之间的,必须的. 响应实体:正文,服务器返回给 ...
- 在开发过程中遇到的Oracle的坑及开发技巧
本人与2018年毕业,工作一年多,仍是菜鸟,自毕业以来一直从事java软件开发工作,工作中大部分数据库都是使用的Oracle,碰到的问题总结一下(随时更新). 1.sql中使用group by 分组时 ...
- Eclipse 快速打开文件所在的本地目录
目前收集到两种方法: 1.快捷键:Ctrl+Shift+W 2.利用Eclipse的External Tools设置快捷方式 第二种方法步骤: a.Run->External Tools-> ...
- Windows添加远程访问用户
Windows远程访问 命令:mstsc ------------------------------------------------------------------------------- ...
- VUE.js入门学习(1)-起步
1.hello world <div id="app">{{content}}</div>var app = new Vue({ el:'#app', da ...
- HALCON导出函数
Halcon小函数的封装和代码导出 一.Halcon小函数的封装和修改 1.名词解释: 算子:指Halcon中最基础.最底层的函数(即你看不到它的代码实现),一个算子只有一句话,例如threshold ...
- python学习笔记-模块和包
模块导入方法 1.import 语句 import module1[,module2[,...moduleN]] 当我们使用import语句的时候,Python解释器是怎么找到对应对文件对呢?答案是解 ...