欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    MATLAB编程技巧.pdf

    • 资源ID:76251889       资源大小:38.81KB        全文页数:3页
    • 资源格式: PDF        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    MATLAB编程技巧.pdf

    MATLAB 编程技巧这里只介绍加快 MATLAB 程序编程效率的建议,其他内容请参见作者著作。因为 MATLAB 语言是一种解释性语言,所以有时 MATLAB 程序的执行速度不是很理想。这里将依照作者十多年的实际编程经验给出加快 MATLAB 程序执行速度的一些建议和体会。尽量避免使用循环:循环语句及循环体经常被认为是MATLAB 编程的瓶颈问题。改进这样的状况有两种方法:o尽量用向量化的运算来代替循环操作。我们将通过如下的例子来演示如何将一般的循环结构转换成向量化的语句。例 1考虑下面无穷级数求和问题:如果我们只求出其中前有限项,比如100,000 项之和(要精确地求出级数的和,无需求100000 项,几十项往往就能得出满意的精度。这里主要是为了演示循环运算向量化的优越性。),则可以采用下面的常规语句进行计算 tic,s=0;for i=1:100000,s=s+(1/2i+1/3i);end,s,toc s=1.5000 elapsed_time=1.9700 如果采用向量化的方法,则可以得出下面结果。可以看出,采取向量化的方法比常规循环运算效率要高得多。tic,i=1:100000;s=sum(1./2.i+1./3.i),toc s=1.5000 elapsed_time=0.3800 o在必须使用多重循环的情况下,如果两个循环执行的次数不同,则建议在循环的外环执行循环次数少的,内环执行循环次数多的。这样也可以显著提高速度。例 2考虑生成一个5x10000 的 Hilbert 长方矩阵,该矩阵的定义是其第i 行第j 列元素为h_i,j=1/(i+j-1)。我们可以由下面语句比较先进行i=1:5 的循环和后进行该循环的耗时区别,其效果和前面分析的是一致的。tic for i=1:5 for j=1:10000 H(i,j)=1/(i+j-1);end end toc elapsed_time=8.6800 tic,for j=1:10000 for i=1:5 J(i,j)=1/(i+j-1);end end toc elapsed_time=25.7000 大型矩阵的预先定维给大型矩阵动态地定维是个很费时间的事。建议在定义大矩阵时,首先用MATLAB 的内在函数,如zeros()或 ones()对之先进行定维,然后再进行赋值处理,这样会显著减少所需的时间的。再考虑例3-20 中的问题,如果输入下面的命令 tic H=zeros(5,10000);for i=1:5 for j=1:10000 H(i,j)=1/(i+j-1);end end toc elapsed_time=1.0400 则采用预先定维的方法,再结合向量化的方法,我们可以给出下面的MATLAB 语句。tic H=zeros(5,10000);for i=1:5 H(i,:)=1./i:i+9999;end toc elapsed_time=0.060 可见,预先定维后,所需要的时间显著地减少了。可以看出,同样一个问题,由于采用了有效的措施,所需的时间就可以从25.7 秒减少到0.06 秒,亦即效率提高了428 倍。对二重循环这样的特殊问题,我们还可以使用meshgrid()函数构造两个5x10000 矩阵i 和 j,从而直接得出H 矩阵,更进一步地加快速度。tic,i,j=meshgrid(1:5,1:10000);H=1./(i+j-1);toc elapsed_time=0 优先考虑内在函数矩阵运算应该尽量采用MATLAB 的内在函数,因为内在函数是由更底层的编程语言 C 构造的,其执行速度显然快于使用循环的矩阵运算。采用有效的算法在实际应用中,解决同样的数学问题经常有各种各样的算法。例如求解定积分的数值解法在MATLAB中就提供了两个函数quad()和 quad8(),其中后一个算法在精度、速度上都明显高于前一种方法。所以说,在科学计算领域是存在“多快好省”的途径的。如果一个方法不能满足要求,可以尝试其他的方法。应用Mex 技术虽然采用了很多措施,但执行速度仍然很慢,比如说耗时的循环是不可避免的,这样就应该考虑用其他语言,如 C 或 Fortran 语言。按照Mex 技术要求的格式编写相应部分的程序,然后通过编译联接,形成在MATLAB 可以直接调用的动态连接库(DLL)文件,这样可以显著地加快运算速度。有关Mex 技术及其应用的详细内容可参见第7 章。摘自MATLAB 大观园作者:薛定宇(东北大学)

    注意事项

    本文(MATLAB编程技巧.pdf)为本站会员(索****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开