将提高MATLAB运算速度的途径总结为以下几点:
     
    
   
    
     
      1. 硬件方面:CPU配置高一些;
     
    
   
    
     
      2. 利用Profiler评估程序,查找出函数花费时间较多的地方优化;
     
    
   
    
     
      3. 尽量少使用for或者while循环,而是向量化;
     
    
   
    
     
      4. 循环中,尽量将变量预配置,即预先开辟空间,减少循环内部的动态配置;
     
    
   
    
     
      5. 尽量使用MATLAB函数库中的自带函数;
     
    
   
    
     
      6. 尽量将需实现的独立功能编写成M函数,尽量少用M脚本文件;
     
    
   
    
     
      7. 将程序进行编译,MEX文件,进行执行;
     
    
   
    
     
      8. 可以考虑利用并行计算Parallel,前提是脚本可以进行并行计算,具体查看:help parallel
     
    
   
    
     
      9. 在脚本可以并行计算的前提下,将可以利用的计算机搭建并行集群,建立并行环境。
     
    
   
    
     
      如何启动MATLAB并行计算?
     
    
   
    
     
      以单台双核计算机为例。首先打开MATLAB命令窗口,输入matlabpool open就OK了。如图所示:
     
    
   
    
    
   
- 
  
 这样,就相当于将一台计算机的两个核心,当做两台机器用啦。接下来是编程序实现的方法。
 
- 
 MATLAB并行计算的模式有几种?
 
 主要是两种:parfor模式和spmd模式。两种模式的应用都很简单。第一个中,parfor其实就是parallel+for简化而来,顾名思义啊,就是把原来程序中的for循环中的关键字forg改为parfor就OK啦。不过这是很初步的介绍,限于篇幅不能详细展开了,详细的可以用输入命令help parfor查看,如图:
   
- 
 同样地,可以适用于spmd模式。
 
- 
 程序举例:例如很简单的一个程序:
 
 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算,时间区别如下图所示:
   
 这只是用双核计算的效果,如果是4核心8核心,效果要好的多啦,需要用MATLAB的童鞋不妨试试看咯。
 
- 
 关闭并行计算模式。
 
 不想用了?送一个命令进去就关了,估计你已经猜到那即是:matlabpool close.如图所示:
 
   
 
