




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MATLAB 编程技巧一、 尽量避免使用循环:循环语句及循环体经常被认为是MATLAB 编程的瓶颈问题。改进这样的状况有两种方法:(1) 尽量用向量化的运算来代替循环操作。我们将通过如下的例子来演示如何将一般的循环结构转换成向量化的语句。例3.19考虑下面无穷级数求和问题: 如果我们只求出其中前有限项,比如 100,000 项之和 (要精确地求出级数的和,无需求 100000 项,几十项往往就能得出满意的精度。这里主要是为了演示循环运算向量化的优越性。),则可以采用下面的常规语句进行计算 tic, s=0;for i=1:100000, s=s+(1/2i+1/3i); end, s,tocs =1.5000elapsed_time =1.9700 如果采用向量化的方法,则可以得出下面结果。可以看出,采取向量化的方法比常规循环运算效率要高得多。 tic, i=1:100000; s=sum(1./2.i+1./3.i), tocs =1.5000elapsed_time =0.3800(2)在必须使用多重循环的情况下,如果两个循环执行的次数不同,则建议在循环的外环执行循环次数少的,内环执行循环次数多的。这样也可以显著提高速度。 例3.20考虑生成一个 5x10000 的 Hilbert 长方矩阵,该矩阵的定义是其第 i 行第 j 列元素为 h_i,j=1/(i+j-1)。我们可以由下面语句比较先进行 i=1:5 的循环和后进行该循环的耗时区别,其效果和前面分析的是一致的。 ticfor i=1:5for j=1:10000H(i,j)=1/(i+j-1);endendtocelapsed_time =8.6800 tic,for j=1:10000for i=1:5J(i,j)=1/(i+j-1);endendtocelapsed_time =25.7000 二、 大型矩阵的预先定维 给大型矩阵动态地定维是个很费时间的事。建议在定义大矩阵时,首先用 MATLAB 的内在函数,如zeros() 或 ones() 对之先进行定维,然后再进行赋值处理,这样会显著减少所需的时间的。再考虑例 3-20 中的问题,如果输入下面的命令 ticH=zeros(5,10000);for i=1:5for j=1:10000H(i,j)=1/(i+j-1);endendtocelapsed_time =1.0400则采用预先定维的方法,再结合向量化的方法,我们可以给出下面的 MATLAB 语句。 ticH=zeros(5,10000);for i=1:5H(i,:)=1./i:i+9999;endtocelapsed_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); tocelapsed_time =0 四、 优先考虑内在函数 矩阵运算应该尽量采用 MATLAB 的内在函数,因为内在函数是由更底层的编程语言 C 构造的,其执行速度显然快于使用循环的矩阵运算。 五、 采用有效的算法 在实际应用中,解决同样的数学问题经常有各种各样的算法。例如求解定积分的数值解法在 MATLAB中就提供了两个函数 quad() 和 quad8(),其中后一个算法在精度、速度上都明显高于前一种方法。所以说,在科学计算领域是存在“多快好省”的途径的。如果一个方法不能满足要求,可以尝试其他的方法。 六、 应用 Mex 技术 虽然采用了很多措施,但执行速度仍然很慢,比如说耗时的循环是不可避免的,这样就应该考虑用其他语言,如 C 或 Fortran 语言。按照 Mex 技术要求的格式编写相应部分的程序,然后通过编译联接,形成在 MATLAB 可以直接调用的动态连接库 (DLL) 文件,这样可以显著地加快运算速度。MATLAB 图形上的文字修饰字符对象及其属性 文字标注是图形修饰中的重要因素,它可以是用户在窗口上随意添加的字符说明,还可以是坐标轴对象中所用到的刻度标志等。字符对象的常用属性如下: Color 属性: 字符的颜色。该属性的属性值是一个 1x3 颜色向量。 FontAngle 属性: 字体倾斜形式。如正常 normal 和斜体 italic 等。 FontName 属性: 字体的名称。如 Times New Roman 与 Courier 等。 FontSize 属性: 字号大小。默认以 pt 为单位,属性值应该为实数。 FontWeight 属性: 字体是否加黑。可以选择 light、normal (默认值)、demi 和 bold 4 个选项, 其颜色逐渐变黑。 HorizontalAlignment 属性: 表示文字的水平对齐方式。可以有 left (按左边对齐)、center(居中对齐)、right(按右边对齐) 三种选择。类似地,对字符矩阵的位置 还有VerticalAlignment 属性。 FontUnits 属性: 字体大小的单位。如 points (磅数,即 pt) 为默认的值,此外, 还可以使用如下单位 inches (英寸)、centimeters (厘米)、normalized (归一值) 与 pixels (像素) 等。 Rotation 属性: 字体旋转角度。可以为任何数值。 Editing 属性: 是否允许交互式修改。选项可以为 on 和 off。 String 属性: 构成本字符对象的字符串。可以是字符串矩阵。 Interpreter 属性: 是否允许 TeX 格式。选项为 tex (允许 TeX 格式) 和 none (不允许) 两种,前者显示的效果好,而后者速度快。 Extent 属性: 字符串所在的位置范围,是只读型的,1x4 向量,前两个值表示字符串所在位置的左下角坐标,而后两个分量分别为字符对象的长和高。 MATLAB 字符串中可以直接使用的一些 TeX 命令见表 4-3。例给出下面的MATLAB命令 t=partial(f_ip)/partialt=-Sigma_i=1npartial(f_ip)/,. partialx_i + 0.5Sigma_i=1nSigma_j=1n,. partial2(b_ijp)/partialx_ipartialx_j; tt=str2mat(t,Y(omega)=int_0infty y(t)e-jomegatdt); x,y=ginput(1); text(x,y,tt); 则将得出如下图所示的结果。看见较复杂的数学公式也可以在 MATLAB 窗口中显示出来。 例分形理论是一个很有趣的领域,在这里我们给出一个简单的例子。任意选定一个二维平面上的初始点坐标 (x0, y0),假设我们可以生成一个在 0,1 区间上均匀分布的随机数 gi,那么根据其取值的大小,可以按下面的公式生成一个新的坐标点 (x1,y1): 从新坐标再根据随机数计算下一个点,如此类推。可以将上面的算法编写出下面的 MATLAB 函数 function x,y=frac_tree(x0,y0,v,N)x=x0; zeros(N-1,1); y=y0; zeros(N-1,1);for i=2:N vv=v(i); if vv0.05, y(i)=0.5*y(i-1); elseif vv0.45, x(i)=0.42*(x(i-1)-y(i-1); y(i)=0.2+0.42*(x(i-1)+y(i-1);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初高中历史教学衔接策略研究-以“工业革命”为例
- 2025至2030中国暖通软件行业发展趋势分析与未来投资战略咨询研究报告
- 2025至2030中国智能现金计数器行业发展趋势分析与未来投资战略咨询研究报告
- 2025至2030中国无线扬声器行业发展趋势分析与未来投资战略咨询研究报告
- 2025至2030中国斯台普斯PP(聚丙烯)非织造布行业发展趋势分析与未来投资战略咨询研究报告
- 2025至2030中国数据银行行业市场发展分析及商业模式与投资报告
- 2025至2030中国救火栓行业发展趋势分析与未来投资战略咨询研究报告
- 2025至2030中国平版印刷机行业发展趋势分析与未来投资战略咨询研究报告
- 农业生产资源共享与合作种植协议
- 2025至2030中国左手外摆商业前门行业发展趋势分析与未来投资战略咨询研究报告
- 九师联盟2024-2025学年高二下学期6月摸底联考语文试题(含答案)
- 非遗文化掐丝珐琅景泰蓝
- 2025年幼儿园教师招聘考试试题及答案
- 电动葫芦考试题及答案
- 2025广东省劳动合同样本
- 2025餐饮兼职合同样本
- 农资安全宣传课件
- 绿色营销试题及答案详解
- 2025年三级电子商务师(网商)理论考试题库(浓缩500题)
- 2025年下半年浙江省杭州建德市部分事业单位招聘(134人)易考易错模拟试题(共500题)试卷后附参考答案
- 2026年上海中考英语一轮复习:考纲词汇一词多义词清单
评论
0/150
提交评论