Matlab并行编程方法1

摘要:
我相信很多朋友在使用matlab进行计算时都会遇到周期太多或者单次计算太多的问题,比如要计算的数值数组数据量太大,而使用传统的编程方法,一次运行几个小时的程序会让你丧命,对吧?根据我自己的经验,MATLAB并行计算非常强大。通过对原始程序的简单更改,可以节省大量时间。首先,打开MATLAB命令窗口并输入MATLAB池打开。关闭并行计算模式。

相信很多朋友在利用matlab进行计算时,会遇到循环次数过大,或者是单次计算量过大的问题,比如需要计算的数值阵列数据量过大,利用传统的编程方式,跑一次程序几个小时,都要等的急死了是不是呢?如果遇到这种情况,则可以尝试一下MATLAB并行计算,传统的计算方式都是串行计算。并行计算之所以可行,取决于两方面因素:a)现在大家的计算机是多核的,至少也是双核了吧,有的可能8核都有,这是很重要的硬件基础。b)MATLAB本身提供了很好的并行计算函数,加上你的聪明智慧,设计合理的软件,这样就有了软件基础了。

  1. 并行计算的优势是什么?

    以自己的经验来看,MATLAB并行计算真是很厉害的,通过对原始程序很简单的改动,就能节省很多时间。我给出一个很简单的例子,说明并行计算的优势所在。例如一个遗传算法的MATLAB程序,通常的计算运行方式需要2个小时得到结果,那如果用一台双核的机器并行计算呢?理论上1个小时就可以跑完。那如果是用一台8核的计算机,就只是一刻钟(15分钟)了。而且并行计算可以配合分布式计算服务,同时调动若干台计算机同时工作,把刚才的程序计算时间缩短到分分钟绝对不是难事啊。

  2. 如何启动MATLAB并行计算?

    以单台双核计算机为例。首先打开MATLAB命令窗口,输入matlabpool open就OK了。如图所示:

    Matlab并行编程方法1第1张

    这样,就相当于将一台计算机的两个核心,当做两台机器用啦。接下来是编程序实现的方法。

  3. MATLAB并行计算的模式有几种?

    主要是两种:parfor模式和spmd模式。两种模式的应用都很简单。第一个中,parfor其实就是parallel+for简化而来,顾名思义啊,就是把原来程序中的for循环中的关键字forg改为parfor就OK啦。不过这是很初步的介绍,限于篇幅不能详细展开了,详细的可以用输入命令help parfor查看,如图:

    Matlab并行编程方法1第2张

  4. 同样地,可以适用于spmd模式。

  5. 程序举例:例如很简单的一个程序:

    tic

    %传统方式计算

    c1=1;

    for i = 1:500

       c1 = c1+max(eig(rand(i,i)));

    end

    t1 = toc;

    matlabpool open;

    %parfor并行方式计算

    tic

    c2=1;

    parfor ii = 1:500

      c2 = c2+max(eig(rand(ii,ii)));

    end

    t2 = toc;

    matlabpool close;

    display(strcat('parfor并行计算时间:',num2str(t2),'秒'));

    display(strcat('客户端串行计算时间:',num2str(t1),'秒'));

    分别用传统方式算和parfor算,时间区别如下图所示:

    Matlab并行编程方法1第3张

    这只是用双核计算的效果,如果是4核心8核心,效果要好的多啦,需要用MATLAB的童鞋不妨试试看咯。

  6. 关闭并行计算模式。

    不想用了?送一个命令进去就关了,估计你已经猜到那即是:matlabpool close.如图所示:Matlab并行编程方法1第4张

    早日学会哦!

免责声明:文章转载自《Matlab并行编程方法1》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇详解zabbix安装部署(Server端篇)如何对Outlook添加右键菜单下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Matlab基本函数-ginput函数

1、ginput函数:获取指定点坐标值 2、用法说明 (1)[x,y] = ginput(n) 函数从当前的坐标图上选择n个点,并返回这n个点的相应的坐标向量x、y。n个点可由鼠标定位。用户可以按下回车键在输入n个点之前终止输入; (2)[x,y] = ginput 函数获得任意个数的输入点,直到用户按下回车键为止并返回这n个点的相应的坐标向量x、y; (...

Matlab中怎样将.dat格式的文件进行加载转化为一个矩阵??

在网上下载了一个数据集rating.dat,格式为.dat的,要在matlab中使用,必须将其转化为一个.mat格式的矩阵,下面写一下具体步骤: 第一步:打开matlab,界面如图: 然后点击“打开”选项:界面如下 例如选择rating.dat 文件  点击上图右下角“打开”,得到如下界面:  然后在“列分隔符”里进行选择,由于原文本文件格式如下图:...

MATLAB实现一个EKF-2D-SLAM(已开源)

1. SLAM问题定义 同时定位与建图(SLAM)的本质是一个估计问题,它要求移动机器人利用传感器信息实时地对外界环境结构进行估计,并且估算出自己在这个环境中的位置,Smith 和Cheeseman在上个世纪首次将EKF估计方法应用到SLAM。 以滤波为主的SLAM模型主要包括三个方程: 1)运动方程:它会增加机器人定位的不确定性 2)根据观测对路标初始化...

bp神经网络及matlab实现

本文主要内容包含: (1) 介绍神经网络基本原理,(2) AForge.NET实现前向神经网络的方法,(3) Matlab实现前向神经网络的方法 。 第0节、引例 本文以Fisher的Iris数据集作为神经网络程序的測试数据集。Iris数据集能够在http://en.wikipedia.org/wiki/Iris_flower_data_set 找到。这...

CentOS terminal 安装 matlab(mode=silent)

1. 下载matlab for Unix 2014 ,需要crack文件 2. 挂载iso文件, mount -o loop,ro Mathworks.Matlab.R2014a.iso /media 3. 将crack中的install.jar 覆盖/media/java/jar下面的install.jar,这步骤必须正确完成 sudo cp Crack...

Matlab成长之路_1(图片,视频,摄像头的读取和显示)

在计算机视觉和图像处理中,用matlab来验证算法的有效性是非常重要的,可以作为前期工作,因为matlab比c/c++等编程要来得简单些,不需要考虑那么多的数据类型和变量定义等。因此matlab在图像和视觉处理领域的这个得力工具也是需要掌握的。 这一节简单介绍一些matlab自带函数实现图像,视频,摄像头数据的读取和显示方法(因为刚入门,方法可能不是很好)...