`
hustlong
  • 浏览: 123674 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

加速matlab运行

阅读更多

一、 遵守Performance Acceleration的规则
二、 遵守三条规则






一、 遵守Performance Acceleration的规则
关于什么是“Performance Acceleration”请参阅matlab的帮助文件。我只简要的将
其规则总结如下7条:1、只有使用以下数据类型,matlab才会对其加速:logical,char,int8,uint8,int16,uint16,int32,uint32,double
而语句中如果使用了非以上的数据类型则不会加速,如:numeric,cell,structure,single,
function handle,java classes,user classes,int64,uint64
2、matlab不会对超过三维的数组进行加速。3、当使用for循环时,只有遵守以下规则才会被加速:a、for循环的范围只用标量值
来表示;
b、for循环内部的每一条语句都要满足上面的两条规则,即只使用支持加速的数
据类型,只使用
三维以下的数组;c、循环内只调用了内建函数(build-in function)。4、当使用if、elseif、while和switch时,其条件测试语句中只使用了标量值时,将
加速运行。
5、不要在一行中写入多条操作,这样会减慢运行速度。即不要有这样的语句:
x = a.name; for k=1:10000, sin(A(k)), end;
6、当某条操作改变了原来变量的数据类型或形状(大小,维数)时将会减慢运行速
度。
7、应该这样使用复常量x = 7 + 2i,而不应该这样使用:x = 7 + 2*i,后者会降低
运行速度。

二、 遵守三条规则
1、尽量避免使用循环,MATLAB的文档中写到“MATLAB is a matrix language, which means it is designed
for vector and matrix operations. You can often speed up your M-file c
ode by using
vectorizing algorithms that take advantage of this design. Vectorizati
on means converting
for and while loops to equivalent vector or matrix operations.”。改进
这样的状况有两种方法:
a、尽量用向量化的运算来代替循环操作。如将下面的程序:
i=0;
for t = 0:.01:10
i = i+1;
y(i) = sin(t);
end
替换为:
t = 0:.01:10;
y = sin(t);
速度将会大大加快。最常用的使用vectorizing技术的函数有:All、diff、ipermute、permute、reshape、squeeze、any、find、logical、prod、shiftdim、sub2ind、cumsum、ind2sub、ndgrid、repmat、sort、sum 等。
请注意matlan文档中还有这样一句补充:“Before taking the time to
vectorize your code, read the section on Performance Acceleration.
You may be able to
speed up your program by just as much using the MATLAB JIT Accelera
tor instead of
vectorizing.”。何去何从,自己把握。
b、在必须使用多重循环时下,如果两个循环执行的次数不同,则在循环的外环执
行循环次数少的,
内环执行循环次数多的。这样可以显著提高速度。
2、a、预分配矩阵空间,即事先确定变量的大小,维数。这一类的函数有zeros、ones、cell、struct、repmat等。
b、当要预分配一个非double型变量时使用repmat函数以加速,如将以下代码:
A = int8(zeros(100));
换成:
A = repmat(int8(0), 100, 100);
c、当需要扩充一个变量的大小、维数时使用repmat函数。
3、a、优先使用matlab内建函数,将耗时的循环编写进MEX-File中以获得加速。b、使用Functions而不是Scripts 。


分享到:
评论

相关推荐

    基于CUDA的加速MATLAB计算研究.pdf

    CUDA加速MATLAB计算主要包含两个方面:一是直接使用CUDA C++语言重写某些计算密集型的MATLAB函数,二是通过MATLAB的MEX接口,将C++编写的函数封装成MATLAB可以调用的模块。 岩土工程中常用的算法,比如矩阵计算、...

    MATLAB 加速方法大全 Accelerating MATLAB Performance

    它通过深入探讨MATLAB代码的性能分析、资源使用情况以及多种加速技巧,旨在改变人们对于MATLAB运行缓慢的传统看法。 在内容上,本书详细介绍了如何分析MATLAB代码的性能瓶颈,使读者能够专注于程序的“热点”。书中...

    列车运行图MATLAB程序_列车运行_列车_列车运行图_pudn运行图_运行图_

    4. **动态模拟**:除了静态的运行图,MATLAB还可以实现动态模拟,模拟列车在铁路线上的实际运行情况,包括加速、减速、停靠等过程。 5. **调整与优化**:程序可能包含对运行图进行调整的功能,允许用户根据实际情况...

    提高matlab运行速度

    ### 提高MATLAB运行速度:专业技巧与策略 在科研、工程分析以及数据处理领域,MATLAB是一款极其强大的工具,但其对系统资源的高需求往往成为制约性能的关键因素。为了提升MATLAB程序的执行效率,本文将深入探讨一...

    MATLAB 程序优化加速

    MATLAB 程序优化加速是指通过各种技术和方法来提高 MATLAB 程序的运行速度,以满足实际应用中的需求。MATLAB 作为一款强大的数值计算工具,具有很高的计算能力和灵活性,但是在实际应用中,它的运行效率却远远低于 ...

    How to speed up MATLAB 如何加速 MATLAB.pdf

    ### 如何加速MATLAB:关键技术点解析 #### 标题与描述解读 本文档主要讲述了如何提高MATLAB软件的运行速度。MATLAB是一款广泛应用于算法开发、数据分析、数值计算及图形绘制等方面的高级技术计算语言和交互式环境。...

    编写快速运行MATLAB程序指南

    在编写高效运行的MATLAB程序时,首先需要明白MATLAB是一种原型设计环境,强调开发的便捷性、语言的灵活性、交互式调试等,相较于性能导向型语言如C和Fortran,MATLAB可能在速度上有所不足。然而,仍然存在多种方法...

    matlab开发-在Matlab中创建编译和运行CudaAcceleratedProgram的辅导

    matlab开发-在Matlab中创建编译和运行CudaAcceleratedProgram的辅导。关于在Matlab中创建、编译和运行CUDA加速程序的教程

    并行的matlab——matlabMPI

    并行计算是现代科学计算领域中的重要技术,它允许我们利用多核处理器或者分布式计算资源来加速复杂的计算任务。在MATLAB中实现并行计算,一个常见的方式是使用MATLABMPI(Message Passing Interface)工具箱,这个...

    GPU加速matlab

    GPU加速MATLAB是一种通过使用NVIDIA的图形处理单元(GPU)来加快MATLAB应用程序运行速度的方法。对于初学者而言,GPU加速可以显著提升复杂运算的执行速度,尤其是在矩阵运算、傅里叶变换、线性代数运算等科学计算...

    MATLAB平台下的CUDA加速库

    MATLAB平台下的CUDA加速库。运用该库可避免在MEX函数中来回拷贝GPU数据,提高MATLAB运行速率。附件给出一个简单的矩阵乘法的示例程序,该程序在GTX TITAN下运行效率比intel i7 3930k提高了10倍。

    matlab开发-硬件加速3DviewPerformAtlab

    在MATLAB开发中,硬件加速对于提升3D图形性能至关重要,特别是当处理复杂的数据可视化或交互式应用时。"硬件加速3DviewPerformAtlab"是MATLAB中一个旨在优化三维视图显示性能的工具或功能,它利用现代计算机的GPU...

    GPUmat(GPU for matlab)

    (3)GPUmat使用GPU多核架构加速Matlab函数; (4)已有的Matlab代码可经少量修改而获得移植和执行; (5)通过Matlab脚本语言访问GPU资源,结合了Matlab快速原型开发和GPU快速执行的能力; (6)GPUmat可以用作...

    利用GPU加速matlab计算

    ### 利用GPU加速Matlab计算 #### 概述 随着计算需求的不断增加,高性能计算技术变得越来越重要。其中,图形处理器(GPU)因其并行处理能力而在许多领域展现出巨大潜力,包括科学计算、工程仿真以及数据分析等。...

    提高MATLAB运行效率.pdf

    1. 循环矢量化:MATLAB 是为矢量和矩阵操作而设计的,因此,可以通过矢量化方法加速 M 文件的运行。例如,将 for 循环和 while 循环转换为等价的矢量或矩阵操作。 2. 给数组或矩阵预分配内存:特别是使用大型数组或...

    matlab开发-加速MatlabPerformanceSourceDefiles

    "matlab开发-加速MatlabPerformanceSourceDefiles"这个资源集合提供了来自2014年CRC出版社出版的《加速Matlab性能》一书的源代码示例。这些示例文件旨在帮助开发者理解和应用各种技术来优化MATLAB程序,提高执行效率...

    Speeding up MATLAB Applications 加速 MATLAB 应用程序.pdf

    - 学习如何在 MATLAB 中利用这些硬件特性可以极大地加速计算密集型任务。 5. **总结与最佳实践** - 汇总上述方法并提供额外的最佳实践建议,帮助用户更高效地编写 MATLAB 代码。 #### 向量和矩阵操作的力量 - *...

    基于CUDA的加速MATLAB计算研究.zip

    《基于CUDA的加速MATLAB计算研究》这篇文献深入探讨了如何利用CUDA技术来提升MATLAB的计算性能。CUDA,全称Compute Unified Device Architecture,是由NVIDIA公司推出的一种并行计算平台和编程模型,旨在使GPU(图形...

Global site tag (gtag.js) - Google Analytics