数模论坛

 找回密码
 注-册-帐-号
搜索
热搜: 活动 交友 discuz
查看: 10988|回复: 15

matlab编程小技巧

  [复制链接]
发表于 2004-8-15 18:06:01 | 显示全部楼层 |阅读模式
<FONT face=宋体>尽量避免使用循环:循环语句及循环体经常被认为是~MATLAB 编程的瓶颈问题。改进这样的状况有两种方法:
(1) 尽量用向量化的运算来代替循环操作。我们将通过如下的例子来演示如何将一般的循环结构转换成向量化的语句。

(2)在必须使用多重循环的情况下,如果两个循环执行的次数不同,则建议在循环的外环执行循环次数少的,内环执行循环次数多的。这样也可以显著提高速度。

大型矩阵的预先定维
给大型矩阵动态地定维是个很费时间的事。建议在定义大矩阵时,首先用 MATLAB 的内在函数,如zeros() 或 ones() 对之先进行定维,然后再进行赋值处理,这样会显著减少所需的时间的。


<LI>优先考虑内在函数
矩阵运算应该尽量采用 MATLAB 的内在函数,因为内在函数是由更底层的编程语言 C 构造的,其执行速度显然快于使用循环的矩阵运算。
<LI>采用有效的算法
在实际应用中,解决同样的数学问题经常有各种各样的算法。例如求解定积分的数值解法在 MATLAB
中就提供了两个函数 quad() 和 quad8(),其中后一个算法在精度、速度上都明显高于前一种方法。所以说,在科学计算领域是存在“多快好省”的途径的。如果一个方法不能满足要求,可以尝试其他的方法。
<LI>应用 Mex 技术
虽然采用了很多措施,但执行速度仍然很慢,比如说耗时的循环是不可避免的,这样就应该考虑用其他语言,如 C 或 Fortran 语言。按照 Mex 技术要求的格式编写相应部分的程序,然后通过编译联接,形成在 MATLAB 可以直接调用的动态连接库 (DLL) 文件,这样可以显著地加快运算速度</LI></FONT>
发表于 2004-8-22 06:10:02 | 显示全部楼层
恩,也可以用matcom将matlab程序转变成在VC(VB)中可用的文件,这样速度要快的多,而且还可以脱离matlab平台![em01]
发表于 2005-8-18 05:36:05 | 显示全部楼层
支持版主
发表于 2005-8-18 06:50:55 | 显示全部楼层
<DIV class=quote><B>以下是引用<I>pjb502com</I>在2004-8-21 22:10:02的发言:</B><BR>恩,也可以用matcom将matlab程序转变成在VC(VB)中可用的文件,这样速度要快的多,而且还可以脱离matlab平台![em01]</DIV>
<>请问如何和VB连用,可否举个例子?</P>
发表于 2005-8-19 00:22:40 | 显示全部楼层
<>没有搞懂!</P>
发表于 2005-8-19 18:45:12 | 显示全部楼层
<>如何转换啊?</P>
<>举个例子,拜托!</P>
发表于 2005-8-24 01:44:09 | 显示全部楼层
多谢一楼的,二楼的  不过好高深啊
发表于 2005-8-24 18:55:27 | 显示全部楼层

<>请问如何和VB连用,可否举个例子?</P>
发表于 2005-8-27 04:24:40 | 显示全部楼层
请举出一个例子吧.谢了.
发表于 2005-8-28 20:25:28 | 显示全部楼层
<>二楼的请现身!</P>
<>帮一下VB 哈</P>
您需要登录后才可以回帖 登录 | 注-册-帐-号

本版积分规则

小黑屋|手机版|Archiver|数学建模网 ( 湘ICP备11011602号 )

GMT+8, 2024-5-14 20:16 , Processed in 0.054040 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表