1. % 定义一个句柄并用这个句柄求值
  2. h = @sin;
  3. h(3)
  4. % % 命令窗口返回内容
  5. % h(3)
  6. % ans =
  7. % 0.1411
  8.  
  9. %定义一个完整句柄,@参数+表达式的形式,并给句柄传参
  10. h1 = @(x)mean(x);
  11. x = [1 2 3 4 5];
  12. h1(x)
  13. % % 命令窗口返回内容
  14. % h1(x)
  15. % ans =
  16. % 3
  17.  
  18. %arrayfun的简单应用
  19. h1 = @(x)mean(x);
  20. x = [1 2 3 4 5];
  21. % 可以用句柄的形式传入第一个形参位置,也可以直接@句柄内容,这两个是等价的
  22. arrayfun(@(x)mean(x),x)
  23. arrayfun(h1,x)
  24. % % 命令窗口返回内容
  25. % ans =
  26. % 1 2 3 4 5
  27. % ans =
  28. % 1 2 3 4 5
  29.  
  30. %arrayfunNamevalue的要求(只举例格式化形式'UniformOutput')
  31. x = [1 2 3 4 5];
  32. % 如果选择为false以元胞的形式返回值
  33. arrayfun(@(x)mean(x),x,'UniformOutput',false)
  34. % 如果选择为true以数组的形式返回值
  35. arrayfun(@(x)mean(x),x,'UniformOutput',true)
  36. % % 命令窗口返回内容
  37. % ans =
  38. % 1×5 cell 数组
  39. % {[1]} {[2]} {[3]} {[4]} {[5]}
  40. % ans =
  41. % 1 2 3 4 5
  42.  
  43. % arrayfun对于提升运算效率的帮助
  44. % 不采用arrayfun形式的运算
  45. tic;
  46. x = magic(3000)*magic(3000);
  47. toc;
  48. % 时间已过 3.125284 秒。
  49.  
  50. % 采用arrayfun形式的运算
  51. tic;
  52. arrayfun(@(n)magic(n)*magic(n),3000,'UniformOutput',false);
  53. toc;
  54. % 时间已过 3.125284 秒。

我们分采用运算的时候,第二遍比第一遍快,主要是MATLAB的内存预分配机制。

注意采用arrayfun值是标量形式必须选择false

arrayfun主要是为了打开并行运算库而设计

我们打开并行运算

  1. % arrayfun对于提升运算效率的帮助
  2. % 不采用arrayfun形式的运算
  3. tic;
  4. x = magic(5000)*magic(5000);
  5. toc;
  6. % 时间已过 14.077466 秒。
  7.  
  8. % 采用arrayfun形式的运算
  9. tic;
  10. arrayfun(@(n)magic(n)*magic(n),5000,'UniformOutput',false);
  11. toc;
  12. % 时间已过 13.423996 秒。

我们发现运算效率提升不太明显,因为arrayfun针对标量的运算方式,如果对于像魔方矩阵,可以用meshgrid分解的方式提升更明显 

Matlab高级教程_第四篇:Matlab高级函数_关键词:arrayfun的更多相关文章

  1. Matlab高级教程_第四篇:Matlab高级函数_关键词:drawnow,addpoints,animatedline,getpoints

    0. MATLAB真实航母基本的工具,其中的函数/工具不计其数,而且有些函数/工具非常的炫酷.在MATLAB第四篇章把平时工作中用到的些许函数进行使用的讲解 主题1.:drawnow 解释:更新图窗并 ...

  2. Matlab高级教程_第四篇:白噪声的MATALB生成方式

    1. 白噪声主要是高斯白噪声. 2. 为什么是高斯白噪声? 高斯白噪声:1)这个噪声它是一个随机信号.2)“白”是指其功率谱的常数,这样他的自相关函数是狄拉克函数(冲激函数),由于它的自相关函数是冲激 ...

  3. Python笔记_第四篇_高阶编程_进程、线程、协程_5.GPU加速

    Numba:高性能计算的高生产率 在这篇文章中,笔者将向你介绍一个来自Anaconda的Python编译器Numba,它可以在CUDA-capable GPU或多核cpu上编译Python代码.Pyt ...

  4. 微信小程序教程(第四篇)

    小程序开发基本框架及其限制与优化 开发基本框架(MINA框架) └─ Project-folder/ ·································· 项目所在目录 ├─ page ...

  5. (转) SpringBoot非官方教程 | 第二十四篇: springboot整合docker

    这篇文篇介绍,怎么为 springboot程序构建一个Docker镜像.docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源.Docker 可以让开发者打包他们的 ...

  6. SpringBoot非官方教程 | 第二十四篇: springboot整合docker

    转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springboot/2017/07/11/springboot24-docker/ 本文出自方志朋的博客 这篇文 ...

  7. 史上最简单的 SpringCloud 教程 | 第十四篇: 服务注册(consul)

    转载请标明出处: 原文首发于:https://www.fangzhipeng.com/springcloud/2017/07/12/sc14-consul/ 本文出自方志朋的博客 这篇文章主要介绍 s ...

  8. Python笔记_第四篇_高阶编程_再议装饰器和再议内置函数

    1. 概述: 我们在前面用了很多的装饰器这个工具的方法.这个位置要系统的讲一下装饰器. 1.2 为什么需要装饰器. 装饰器本质是一个Python函数,它可以让其他函数在不需要任何代码变动的前提下增加额 ...

  9. Python笔记_第四篇_高阶编程_实例化方法、静态方法、类方法和属性方法概念的解析。

    1.先叙述静态方法: 我们知道Python调用类的方法的时候都要进行一个实例化的处理.在面向对象中,一把存在静态类,静态方法,动态类.动态方法等乱七八糟的这么一些叫法.其实这些东西看起来抽象,但是很好 ...

随机推荐

  1. apicloud - addEventListener 接收不到 sendEvent 的解决方法

    要将 api.addEventListener 放在最前面 , 减少受到其他事件的影响 apiready = function () { api.addEventListener({          ...

  2. 颜色设置 <color name="white">#FFFFFF</color><!--白色 -->

    <?xml version="1.0" encoding="utf-8"?> <resources> <color name=&q ...

  3. C++基础--引用做函数参数

    引用,简单粗暴的解释叫做别名,简单粗暴的例子就是,我是熊叫大雄,但是很多时候别人不叫我熊叫大雄,会叫我大雄,粤语地区朋友爱叫我阿雄,有人叫我雄,所以,熊叫大雄这个变量的值是我,雄.大雄.阿雄是熊叫大雄 ...

  4. Python 官方推荐的一款打包工具

    译者:Jiong 链接: https://robots.thoughtbot.com/how-to-manage-your-python-projects-with-pipenv 在thoughtbo ...

  5. python2和python3共存

    有很多朋友有这样的烦恼,自己的电脑里装了python2和python3,但是有些时候可能出现只能用python2或python3的情况,这个时候就蒙圈了,不知所措啊,我也是经过了这样的无奈,最后终于找 ...

  6. zuul网关配置

    静态路由:通过url匹配映射地址进行静态路由(只会把到达zuul网关的请求按照发送,并把匹配请求地址 /common-service/ ->http://localhost:9001/) zuu ...

  7. 【Tensorflow】(tf.Graph)和(tf.session)

    图(tf.Graph):计算图,主要用于构建网络,本身不进行任何实际的计算. 会话(tf.session):会话,主要用于执行网络.所有关于神经网络的计算都在这里进行,它执行的依据是计算图或者计算图的 ...

  8. ubuntu下面嘚一些常用基本命令

    1)环境变量配置: 9 ~/.bashrcor ~/.bash_profile. sudo gedit ~/.bashrc 第一种sudo vim ~/.bashrc export PYTHONPAT ...

  9. markdown使用介绍

    一.标题,前面加#,加一个 一级标题,两个二级标题,以此类推. 一级标题 二级标题 三级标题

  10. 如何用Python统计《论语》中每个字的出现次数?10行代码搞定--用计算机学国学

    编者按: 上学时听过山师王志民先生一场讲座,说每个人不论干什么,都应该学习国学(原谅我学了计算机专业)!王先生讲得很是吸引我这个工科男,可能比我的后来的那些同学听课还要认真些,当然一方面是兴趣.一方面 ...