教程学院
图像设计 多媒体类 机械制图 办公软件 操作系统 系统编程 网站编程 网页制作 数据库类 网络路由 网络工程 网络安全 考试认证
酷网学院
CAD
AutoCad Cam350 ProEngineer GCcam MATLAB Unigraphics SolidWorks CAXA Solid3000 Cimatron EdgeCAM
系统
安全 防火墙 病毒 WinXP Win2003 Vista
数据库
编程
网络
精彩图库
  当前位置: 库库中文网 · 机械制图教程 · MATLAB教程

Matlab 编译文件地性能优化

学院最新推荐文章
教程推荐
『Matlab 编译文件地性能优化』如果文章有大量图片,显示会较慢,请等待图片下载完成
 
点击数: 更新时间:2005-8-18 

12.5 编译文件的性能优化
12.5.1 优化原M文件的性能

12.5.1.1 提高向量化程度
【例 12.5.1 .1-1 】本例演示: M 文件与 MEX 文件、向量运算与循环运算的速度比较。

(1)编写如下两类函数 M 文件。
function y=sa(x)
x=x+(x==0)*eps;
y=sin(x)./x;
function y=saf(x)
n=length(x);
for k=1:n
x(k)=x(k)+(x(k)==0)*eps;
y(k)=sin(x(k))/x(k);
end

(2)在 MATLAB 指令窗中,对 sa_mex.m 和 saf_mex.m 进行编译。
cd d:\mywork
mcc -x sa_mex %<1>
mcc -x saf_mex %<2>

(3)运行四个文件,记录运算时间
t=-2*pi:pi/500:2*pi;
tic;sa(t);tt(1)=toc;
tic;saf(t);tt(2)=toc;
tic;sa_mex(t);tt(3)=toc;
tic;y=saf_mex(t);tt(4)=toc;

(4)结果显示和比较
plot(t,y,'r-');grid

图 12.5.1 .1-1

disp(' 运算速度比较 ')
disp(' sa.m saf.m sa_mex.dll saf_mex.dll')
disp(tt)

运算速度比较
sa.m saf.m sa_mex.dll saf_mex.dll
0.3300 2.9100 0.3800 2.5800

12.5.1.2 对数组进行预置
【例 12.5.1 .2-1 】以上节例 12.5.1.1-1 为基础。 saf.m 文件中数组变量 x 和 y 的大小随循环进行而增长,这大大减慢了运算速度。本例演示:在循环前对进行变量预置的好处。

(1)编写如下文件,以 saf_pro.m 和 saf_pro_mex.m 为名,将之保存在当前目录下。
function y=saf(x)
n=length(x);
x=zeros(1,n);y=zeros(1,n);
for k=1:n
x(k)=x(k)+(x(k)==0)*eps;
y(k)=sin(x(k))/x(k);
end

(2)产生编译文件
mcc -x saf_mex
mcc -x saf_pro_mex

(3)运行
t=-2*pi:pi/500:2*pi;
tic;saf(t);tt(1)=toc;
tic;saf_pro(t);tt(2)=toc;
tic;saf_mex(t);tt(3)=toc;
tic;y=saf_pro_mex(t);tt(4)=toc;

(4)速度比较
disp(' 运算速度比较 ')
disp(' saf.m saf_pro.m saf_mex.dll saf_pro_mex.dll')
disp(tt)
运算速度比较
saf.m saf_pro.m saf_mex.dll saf_pro_mex.dll
2.8600 0.6600 2.6300 0.4400

12.5.2 利用mcc(-V1.2)的优化性能

12.5.2.1 编译时指定优化选项-r和-i
【例 12.5.2 .1-1 】求如下非线性差分方程组在 10000 个点上的值。观察原 M 文件、无选项和有选项 MEX 文件运行速度的不同。


(1)利用 MATLAB 编辑窗口编写如下 M 函数文件
function [x,y]=m_henon(n)
x=zeros(1,n);y=zeros(1,n);
for k=1:n-1
x(k+1)=1+y(k)-1.4*x(k)^2;
y(k+1)=0.3*x(k);
end

(2)对 M 文件分别选用编译器 2.0 和 1.2 进行编译如下。
cd d:\mywork
m

[1] [2] 下一页  

】【关闭窗口
·上页:
·下页:
·当前位置: 库库中文网 · 机械制图教程 · MATLAB教程
相关文章
     机械制图教程 - MATLAB教程
普通教程低级文件I/O
推荐教程MATLAB 控制指令窗地指令、操作
普通教程MATLAB 指令窗里面地help指令和
普通教程MATLAB 引导
普通教程MATLAB 文件管理
普通教程MATLAB逻辑操作符
普通教程二维数组地子数组寻访和赋值
普通教程MATLAB 一维数组地创建和寻访
普通教程MatLab工作环境
普通教程matlab调整测试工具
普通教程MATLAB 二维数组地创建
普通教程二维数组元素地标识
精彩图片汇集
advertisement
关于站点 - 广告服务 - 联系我们 - 版权隐私 - 免责声明 - 合作伙伴 - 程序支持 - 网站地图 - 返回顶部
网站文本地图
版权所有:库库中文 2005-2007 欢迎各种媒体转载我们的原创作品[转载请注明出处]
copyright © 2005-2008 www.QQGB.com online services. all rights reserved. 蜀ICP备05015578
Template designed by Virus. Optimized for 1024x768 to Firefox,Opera and MS-IE6. Site powered by EQL.
红盾
热爱电脑,热爱生活
拥有电脑,拥有生命
让我们享受拥有电脑的时光