在使用数组或矩阵之前先定义维数

MATLAB中的变量在使用之前不需要明确地定义和指定维数。但当未预定义数组或矩阵的维数时,当需赋值的元素下标超出现有的维数时,MATLAB 就为该数组或矩阵扩维一次,这样就会大大降低程序的执行效率。因此,在使用数组或矩阵之前,预定义维数可以提高程序的执行效率。

对矩阵元素使用下标或者索引操作

在MATLAB中,矩阵元素的引用可用两个下标来表示。例如:A(i,j) 表示矩阵的第i行第j列的元素;A(1:k,j)表示矩阵A的第j列的前k个元素;A(:,j) 表示矩阵的第j列的所有元素。求矩阵A的第j列元素的平均值的表达式为mean(A(:,j))。

尽量多使用函数文件少使用脚本文件

因为每次调用MATLAB的脚本文件都需要将不必要的中间变量加载到内存中,每执行一次,就加载一次。函数在调用时被编译成了伪代码,只需要加载到内存一次。当多次调用同一个函数时会运行快一些。因此尽量多使用函数文件而少使用脚本文件,也是提高执行效率的一种方法。

在必须使用循环时,可以考虑转换为C-MEX

当必须使用耗时的循环时,可以考虑将循环体中的语句转换为C-MEX。C-MEX是将M文件通过MATLAB 的编译器转换为可执行文件,是按照 MEX 技术要求的格式编写相应的程序,通过编译连接,生成扩展名为.dll的动态链接库文件,可以在MATLAB环境下直接执行。这样,循环体中的语句在执行时不必每次都解释(interpret)。一般来说,C-MEX 文件的执行速度是相同功能的M文件执行速率的20~40倍。编写C-MEX不同于M文件,需要了解MATLAB C-MEX规范。幸运的是MATLAB提供了将M文件转换为C-MEX的工具。

内存优化

MATLAB在进行复杂的运算时需要占用大量的内存。合理使用内存和提高内存的使用效率,可以加快运行速度,减少系统资源的占用。

内存管理函数和命令

● Clear variablename:从内存中删除名称为variablename的变量。

● Clear all:从内存中删除所有的变量。

● Save:将指令的变量存入磁盘。

● Load:将save命令存入的变量载入内存。

● Quit:退出MATLAB,并释放所有分配的内存。

● Pack:把内存中的变量存入磁盘,再用内存中的连续空间载回这些变量。考虑到执行效率问题,不能在循环中使用。

节约内存的方法

● 避免生成大的中间变量,并删除不再需要的临时变量。

● 当使用大的矩阵变量时,预先指定维数并分配好内存,避免每次临时扩充维数。

● 当程序需要生成大量变量数据时,可以考虑定期将变量写到磁盘,然后清除这些变量。当需要这些变量时,再重新从磁盘加载。

● 当矩阵中数据极少时,将全矩阵转换为稀疏矩阵。

将m文件通过matlab 的编译器转换为可执行文件,【转】 Matlab中提高m文件执行效率的小技巧...相关推荐

  1. 【C 语言】数组作为参数退化为指针问题 ( 问题描述 | 从编译器角度分析该问题 | 出于提高 C 语言执行效率角度考虑 | 数组作为参数的推荐方案 )

    文章目录 一.问题描述 二.从编译器角度分析该问题 三.数组作为参数的推荐方案 一.问题描述 将 数组 作为 函数参数 , 传递时会 退化为指针 ; 数组的首地址 , 变为指针地址 , 函数中无法判定 ...

  2. win怎么在计算机里按日期搜索文件,小编教你在Win10系统电脑中设置搜索内容日期范围的小技巧...

    在使用电脑的过程中,很多时候为了我们为了快速找到某个文件,都会使用到系统的搜索功能,不过大家会发现,这项搜索功能在默认情况下,只能选择固定的日期范围比如:今天.昨天.本周.上周.本月.上月.今年.去年 ...

  3. 同一网段的服务器怎么能快速拷贝大文件夹,提高局域网内网速的小技巧

    提高局域网内网速的小技巧 局域网可以通过数据通信网或专用数据电路,与远方的局域网.数据库或处理中心相连接,构成一个大范围的信息处理系统.下面整理了一些提高局域网内网速的小技巧,希望对大家有所帮助! 1 ...

  4. java 写文件 权限不够_教你解决Linux系统中JAVA创建文件后权限不足的问题

    在作业中,项目使用文件上传. 这个功能很常见. 当Kai Ge今天更改其官方帐户时,他遇到了一个问题,即无法访问下载的文件,也无法通过浏览器访问该文件. 它是怎么发生的? 经过许多问题之后,事实证明这 ...

  5. shp文件显示 c语言,上传并在地图中显示Shp文件

    前段时间参与了一个项目,客户有一个功能需求是上传SHP文件并在地图上显示,然后在此基础上做缓冲区处理.经过对比测试,最终选择了shapefile.js工具,在此做个记录. shapfe.js能够将Es ...

  6. java jar包资源文件_深入jar包:从jar包中读取资源文件

    我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等).在单独运行的时候这些简单的处理当然不会有问题.但是,如果我们把代码打成一个jar包以后,即使将资源文件一并打包,这些东西也找不出来了.看看 ...

  7. linux 传送大文件,使用Transfer.sh在Linux上的终端中传输大文件 | MOS86

    想知道如何通过互联网从Linux终端传输大文件是什么样子?与转移.你可以很容易地 Let然而,找到一条主流的文件共享服务是这样的路线很少见. So,你如何在Linux上使用这个工具?在本指南中阅读并了 ...

  8. matlab vs2010编译器xml,如何在MATLAB R2010a 中使用Visual C++ 2010编译器

    1.安装补丁VS2010MEXSupport.zip 参考http://www.mathworks.cn/support/solutions/en/data/1-D5W493/index.html?s ...

  9. 后缀为labels的文件_txt标注文档转换为labelmg VOC格式的xml标注文件

    清理库存8~ #! /usr/bin/python # -*- coding:UTF-8 -*- import os, sys import glob from PIL import Image ## ...

最新文章

  1. ubuntu 14.04 16.04 18.04使用阿里源
  2. -webkit-font-smoothing
  3. 【Python】查找目标值在列表中的索引序号
  4. websocket 获取连接id_nodejs做后端,用websocket写聊天室,怎么获取连接用户的ip呢?...
  5. Linux下core文件调试方法收藏
  6. 计算机考研985院校不歧视,考研最不歧视的985大学有哪些
  7. 信息安全完全参考手册之风险分析(第二章)
  8. win11没有hyper-v
  9. LeetCode 951. Flip Equivalent Binary Trees
  10. w10系统打印服务器怎样出来,win10怎么打开关闭打印机服务教程步骤
  11. 曲线运动与万有引力公式_考试中有关曲线运动及万有引力部分ALevel物理考点及公式总结...
  12. 模拟qq邮箱mysql数据库_后台管理系统3.0(SrpingBoot+MySQL)界面仿QQ邮箱源代码
  13. 关于基本勾股数规律的探讨总结与例题!
  14. rtos系统c语言,让我们来学习RTOS,自己写RTOS
  15. RecycleView简介及基本使用
  16. 真香啊,Python 资深开发者用的贼溜的9个实用技巧
  17. poj解题报告——poj 1528 Perfection
  18. 看门狗ADM8323-8324使用心得
  19. netcore 使用NHibernate
  20. GET日志服务如何使用让你获得建立DT时代海量日志处理能力

热门文章

  1. Vue中插槽slot的使用
  2. LF 第一模块 考试总结
  3. 【javascript】js实现复制、粘贴
  4. ubuntu如何配置lxr
  5. Java中的Map List Set等集合类
  6. css清除浮动的集中方法
  7. ORA-12011+ORA-06512–job执行失败问题
  8. python 的__str__和__repr__有什么区别?
  9. Windows安装PostgreSQL11.1
  10. Maven服务器的使用之Maven桌面项目和Maven Web项目的创建