matlab提速技巧(自matlab帮助文件)

matlab提速技巧(自matlab帮助文件)

1.首先要学会用profiler.
1.1. 打开profiler.
To open the Profiler, select View -> Profiler from the MATLAB desktop, or type profile viewer in the Command Window. The MATLAB Profiler opens.
在我的机器上是: 在matlab desktop下,Desktop->Profiler.
在M文件编辑器下,Tools->Open Profiler.
1.2. 运行profiler
可以把要运行的code拷入Run this code后面的输入框里。
You can run this example
[t,y] = ode23('lotka',[0 2],[20;20])
也可以输入要运行的M文件名。
1.3.Click Start Profiling (or press Enter after entering the statement).
1.4. 查看Profile Detail Report
会告知你哪些代码消耗了多少时间,可以找到哪些函数或那些代码行消耗了主要的时间,或者是经常被调用。

也可以用stopwatch Timer函数,计算程序消耗时间
Use tic and toc as shown here.
tic
   - run the program section to be timed -
toc


2. 加速1:向量化
MATLAB is a matrix language, which means it is designed for vector and matrix operations. You can often speed up your M-file code by using vectorizing algorithms that take advantage of this design. Vectorization means converting for and while loops to equivalent vector or matrix operations.

i = 0;
for t = 0:.01:1000
    i = i+1;
    y(i) = sin(t);
end

运行时间为30.776秒。
改为向量化代码:
t = 0:.01:1000;
y = sin(t);
运行时间为0秒。

Functions Used in Vectorizing
Some of the most commonly used functions for vectorizing are:
 all
 diff
 ipermute
 permute
 reshape
 squeeze
 any
 find
 logical
 prod
 shiftdim
 sub2ind
 cumsum
 ind2sub
 ndgrid
 repmat
 sort
 sum
 
 3. 加速2:Preallocating Arrays(预分配空间)
You can often improve code execution time by preallocating the arrays that store output results. Preallocation makes it unnecessary for MATLAB to resize an array each time you enlarge it. Use the appropriate preallocation function for the kind of array you are working with.
Preallocation also helps reduce memory fragmentation if you work with large matrices.

4.加速其他方法:
Coding Loops in a MEX-File for Speed

If there are instances where you must use a for loop, consider coding the loop in a MEX-file. In this way, the loop executes much more quickly since the instructions in the loop do not have to be interpreted each time they execute.

Functions Are Faster Than Scripts

Your code will execute more quickly if it is implemented in a function rather than a script. Every time a script is used in MATLAB, it is loaded into memory and uated one line at a time. Functions, on the other hand, are compiled into pseudo-code and loaded into memory once. Therefore, additional calls to the function are faster.

Load and Save Are Faster Than File I/O Functions

If you have a choice of whether to use load and save instead of the MATLAB file I/O routines, choose the former. The load and save functions are optimized to run faster and reduce memory fragmentation.

Avoid Large Background Processes

Avoid running large processes in the background at the same time you are executing your program in MATLAB. This frees more CPU time for your MATLAB session.

 

 5. 多线程
在matlab desktop里,File->Preferences->General->Multithreading, 看是否选择了Enable Multithreaded Computation。

如果没选,check it, 看是否有提速。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296956.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GAC及其作用

http://www.cnblogs.com/smallstone/archive/2010/06/29/1767508.html 一、GAC的作用 全称是Global Assembly Cache作用是可以存放一些有很多程序都要用到的公共Assembly,例如System.Data、System.Windows.Forms等等。这样,很多程序就可以从GAC里面取得…

python 装饰器实现_Python装饰器系列01 - 如何正确地实现装饰器

虽然人们能利用函数闭包(function clouser)写出简单的装饰器,但其可用范围常受限制。多数实现装饰器的基本方式会破坏与内省(Introspection)的关联性。可大多数人会说:who cares!但我仍坚持追求正确地写出漂亮代码。我爱内省(introspection)&…

高校教师抄袭豆瓣博主文章,学校证实:基本属实!记过并调离教学科研岗位...

全世界只有3.14 % 的人关注了爆炸吧知识导读作为高层次人才被杭州市引进,并于杭州师范大学任教的教师郭某某最近陷入了一则被指博士论文涉嫌抄袭豆瓣网友事件,近日,学校调查后证实。本文来源:募格学术综合自:红星新闻 …

linux默认归档目录,Linux系统管理(第4章:目录和文件管理二)

Linux系统管理(第4章:目录和文件管理二)一.练习文件查看及检索操作1.查看/etc/filesystems文件,确认当前系统支持的文件系统类型Cat:用于连接多个文件的内容,更多用于查看文件内容2.分页查看/etc/services文件,了解各种…

ASP.NET Core Filter与IOC的羁绊

前言我们在使用ASP.NET Core进行服务端应用开发的时候,或多或少都会涉及到使用Filter的场景。Filter简单来说是Action的拦截器,它可以在Action执行之前或者之后对请求信息进行处理。我们知道.Net Core默认是提供了IOC的功能,而且IOC是.Net Co…

error: storage class specified for parameter问题

error: storage class specified for parameter今天编译时,出现error: storage class specified for parameter问题一下子出现了很多错误;最后,发现是新增的头文件中,最后一个函数的声明缺少一个";“ 引起这个错误虽然很小&a…

sql里如何for循环

declare i intset i1while i<1000begininsert into dbo.T_Uservalues(aaaa,ddddd)set ii1end转载于:https://www.cnblogs.com/lilyzhang/archive/2012/06/14/2549762.html

HTML meta refresh 刷新与跳转(重定向)页面

refresh 属性值 -- 刷新与跳转(重定向)页面refresh用于刷新与跳转(重定向)页面refresh出现在http-equiv属性中&#xff0c;使用content属性表示刷新或跳转的开始时间与跳转的网址引用网址: http://blog.csdn.net/jiankunking demo&#xff1a; <!DOCTYPE html> <html …

一组动图看懂3D打印原理

全世界只有3.14 % 的人关注了爆炸吧知识3D打印是制造业领域的一项新兴技术&#xff0c;被称为“具有工业革命意义的制造技术”。近年来&#xff0c;随着工业技术的进步&#xff0c;3D打印技术得到迅速发展并得到媒体的广泛关注&#xff0c;各类3D打印技术被纷纷报道。下面&…

生产者消费者_【线程通信】生产者消费者模型

1生产者消费者模型介绍生产者消费者模型&#xff0c;是每一个学习多线程的的人都需要知道的模型; 大致情况就是&#xff1a;有两个线程&#xff0c;一个负责生产产品&#xff0c;一个消费产品&#xff0c;两者公用同一块内存区域&#xff0c;也就是产品放在了同一块内存上面&am…

linux检查系统硬件信息命令,Linux查看系统信息(硬件信息, 系统设置信息等) 命令 | Soo Smart!...

Linux 查看系统信息命令是linux初学者必备的基础知识, 这些命令也非常有用, 因为进入linux第一件事就可能是首先查看系统信息, 因此必要的系统的学习一下这些linux系统信息命令还是非常有必要的!下面给除了各linux发行版比较常用的系统信息查询的命令, 大家可以参考, 同时也可以…

在Orchard中使用Image Gallery模块

作为ASP.NET MVC领域一款优秀的开源CMS&#xff0c;Orchard值得所有.NET Web开发人员学习和研究&#xff0c;然后二次开发&#xff0c;最后在其基础上创新。也是遵循国内人员学习IT技术的路线&#xff1a;引进->吸收->消化。 Orchard有很多优秀的功能&#xff0c;在此不一…

宝宝的成长脚印6/15

这半个多月来 在六一儿童节这天&#xff0c;中午带宝宝去一家杂货店门口坐了几分钟喜洋洋摇摇车&#xff0c;傍晚时带他去公园玩滑梯&#xff0c;坐转马&#xff0c;晚上请他吃火车头盒饭 小家伙自己拿勺吃饭越来越稳了&#xff0c;但还需要喂&#xff0c;有时喂他吃时会吃一两…

Dapr + .NET 实战(十二)服务调用之GRPC

欢迎大家参加4小时Dapr.NET 5的实战课程课程链接 https://ke.qq.com/course/4000292?tuin1271860f什么是GRPCgRPC 是一种与语言无关的高性能远程过程调用 (RPC) 框架。gRPC 的主要优点是&#xff1a;高性能轻量级 RPC 框架。协定优先 API 开发&#xff0c;默认使用协议缓冲…

SCVMM 2012 R2运维管理九之:添加非信任的Hyper-v主机和群集

SCVMM 2012 R2运维管理九之&#xff1a;添加非信任的Hyper-v主机和群集之前的博文中我们为各位朋友介绍了如何向SCVMM中添加受信任的Hyper-v的主机和群集&#xff0c;相信大家也都已经有了一个比较深刻的理解&#xff0c;那么今天的博文中就来和大家聊聊:如何添加非受信任的Hyp…

走访近20家代工厂后:近千块的大牌T恤,成本只要几十块

▲ 点击查看“很多人都知道大牌有溢价但是不知道大牌溢价逼近900%打个比方一件1000块的T恤&#xff0c;T恤成本如果是100那么剩下的900&#xff0c;算是买了个大牌logo”这是我们上个月去到的一家中国代工厂工厂内部人员向我们透露的他说&#xff0c;其实无论是纪梵希、爱马仕、…

python execute_command err_Python management.execute_from_command_line方法代碼示例

本文整理匯總了Python中django.core.management.execute_from_command_line方法的典型用法代碼示例。如果您正苦於以下問題&#xff1a;Python management.execute_from_command_line方法的具體用法&#xff1f;Python management.execute_from_command_line怎麽用&#xff1f;…

linux脚本多线程,Shell多线程操作及线程数控制实例

前言在业务开发过程中&#xff0c;经常会在后台写一些shell脚本处理数据&#xff0c;但估计很多人不知道shell脚本也可以支持多线程&#xff0c;而且非常简单。本篇文章主要就是介绍shell实现多进程以及进程数量控制。需求为了更好的说明问题&#xff0c;我们结合例子讲解&…

Node.js Undocumented(2)

写这种系列blog&#xff0c;是为了监督自己&#xff0c;不然我估计我不会有动力写完。这一节&#xff0c;我将介绍下Buffer这个module。js本身对文本友好&#xff0c;但是处理二进制数据就不是特别方便&#xff0c;因此node.js提供了Buffer模块来帮助你处理二进制数据&#xff…

注册asp.net 4.0 到iis

如果没有按照正常的先装iis后装.net的顺序&#xff0c;可以使用此命令重新注册一下&#xff1a; 32位的Windows&#xff1a;---------------------------------------------------------------------------1. 运行->cmd 2. cd C:\Windows\Microsoft.NET\Framework\v4.0.30…