第5讲-matlab程序设计

上传人:小** 文档编号:56465070 上传时间:2018-10-12 格式:PPT 页数:81 大小:4.06MB
返回 下载 相关 举报
第5讲-matlab程序设计_第1页
第1页 / 共81页
第5讲-matlab程序设计_第2页
第2页 / 共81页
第5讲-matlab程序设计_第3页
第3页 / 共81页
第5讲-matlab程序设计_第4页
第4页 / 共81页
第5讲-matlab程序设计_第5页
第5页 / 共81页
点击查看更多>>
资源描述

《第5讲-matlab程序设计》由会员分享,可在线阅读,更多相关《第5讲-matlab程序设计(81页珍藏版)》请在金锄头文库上搜索。

1、第五讲 Matlab程序设计,课程提纲,引子M文件介绍控制语句函数变量及变量作用域程序设计的辅助函数程序设计的优化程序调试信息接口小结,page2,引子华氏温度和摄氏温度的转换,Problem: 设计一个MATLAB 程序,读取一个华氏温度的输入,输出摄氏温度。,Solution:,Step 1: 清晰地陈述出你要解决的问题;“将华氏温度转换为摄氏温度并输出”,Step 2: 确定程序的输入变量和输出变量;“输入变量:华氏温度;输出变量:摄氏温度”,Step 3: 设计程序伪代码;% 读取华氏温度:input T(F)% 温度转换:% 输出摄氏温度:print T(C),page3,Step

2、4: 将伪代码转换为Matlab程序语句,% Script file:temp_conversion.m % % Purpose: % To convert an input temperature from degrees Fahrenheit to % an output temperature in Celsius. % % Record of revisions: % Date Programmer Description of change % = = = % 21/10/13 Y.Y.Guo Original code % % Define variables: % temp_f

3、-Temperature in degrees Fahrenheit % temp_k -Temperature in Celsius% Prompt the user for the input temperature. temp_f=input(Enter the temperature in degrees Fahrenheit:); % Convert to Celsius. temp_k=(5/9)*(temp_f-32); % Write out the result. fprintf(%6.2f degrees Fahrenheit = %6.2f Celsius.n,temp_

4、f,temp_k);,“程序信息”,“名字”,“用途”,“修改记录”,“变量定义”,“读取华氏温度”,“温度转换”,“输出摄氏温度”,page4,Step 5: 调试程序, run(C:Program FilesMATLABR2010abintemp_conversion.m) Enter the temperature in degrees Fahrenheit:120 120.00 degrees Fahrenheit = 48.89 Celsius.Enter the temperature in degrees Fahrenheit:100 100.00 degrees Fahrenh

5、eit = 37.78 Celsius.,Matlab初学者总是期望,拿到问题就能写出漂亮的代码与完美无误的程序,而实际上这是不可能的!,Matlab程序设计中,写代码只是简单的一半,另一半则是问题的分析与伪代码的设计!,Matlab的变量、语句与语法只是血肉般的简单存在,在任何一种语言中都能找到,而一个良好的编程习惯则是灵魂般的永恒存在!,page5,M文件介绍,Matlab是一种高级计算机语言,因而也能够编制一种以.m为扩展名的文本文件,简称M文件。,Matlab是一种解释性语言,命令在运行时被翻译为机器语言被执行,M文件就是命令的集合。,M文件是纯文本(ASCII码)文件,因而便于进行编

6、写和修改。扩展名必须为.m。,M文件分类:,命令式(Script):命令行的简单叠加函数式(Function):参数传递和函数调用,page6,M文件建立与编辑,M文件建立:,Matlab窗口中菜单项FileOpen单击图标 ,打开一个M文件找到M文件,直接双击打开,M文件编辑:,Matlab窗口中菜单项FileNewScript/Function单击图标 ,新建一个M文件,page7,命令式文件(Script),命令式文件的运行相当于在命令窗口(Command Window)中逐行输入并运行命令。需注意一下几点:标点符号的运用要恰当好处,每行命令结束时用分号隔开,以免程序运行时数据输出造成不

7、便;建立良好的书写风格,保持程序的可读性,比如程序的层次感,注释行的书写;注释行以符号%开头,在程序运行中不被执行,只起解释说明作用;不需要用end语句作为命令式文件的结束标志;运行此文件时,将其目录设置为当前目录。,page8,实例1:建立一命令式M文件绘制Matlab的LOGO图,% Script file: logotu.m % % Purpose: % This file is to create the Logo of % Matlab softwareload logo surf(L,R), colormap(M) n=size(L,1) axis off axis(1 n 1 n

8、 -.2 .8) view(-37.5,30) title(Life is too short to spend writing DO loops.),page9,函数式文件(Function),函数式文件可以实现计算中的参数传递。函数式的标志是第1行为function语句。,函数式可以有返回值,也可有无返回值;函数式文件名与函数名应一一对应;函数式中的变量仅在函数内部起作用,为局部变量;养成良好的注释习惯,方便自己,方便他人。,function outarg1, outarg2, . = fname(inarg1, inarg2, .) % H1 comment line % Other c

9、omment lines . (Executable code) . (return),help命令运行后将显示M文件注释语句中的第一个连续块,被空行隔离的其它注释语句,将被忽略; lookfor显示第一个注释行内容,为了便于被搜索,第一行注释尽可能包含特征信息。,page10,实例2:建立求一个向量元素平均值的函数,function y=average(x) % AVERAGE 求向量元素的平均值 % 语法 %y=average(x) % 其中,x是向量,y为计算得到向量元素的均值 % 若输入参数为非向量时则出错% 代码行 m,n=size(x); % 判断输入参数是否为向量 if(m=1)

10、|(n=1)|(m=1, x=1:10; y=average(x)y =5.5000 x=2 4 6 8 10; y=average(x)y =6,page11,控制语句,顺序语句选择语句分支语句循环语句人机交互语句,page12,顺序语句,Matlab程序的命令语句按固定的顺序一个接一个的执行,这样的程序称为顺序语句。,% Script file: logotu.m % % Purpose: % This file is to create the Logo of % Matlab softwareload logo surf(L,R), colormap(M) n=size(L,1) ax

11、is off axis(1 n 1 n -.2 .8) view(-37.5,30) title(Life is too short to spend writing DO loops.),顺序语句只能实现简单的功能,而在解决实际问题时往往会面临选择执行特定命令及重复性执行特定命令的情形,因而需要学习选择语句及循环语句。,page13,选择语句,选择语句可以使MATLAB 选择性执行指定区域内的代码(称之为语句块blocks),而跳过其他区域的代码。,if control_expr_1 Statements (block 1) elseif control_expr_2 Statements

12、(block 2) elseif control_expr_3 Statements (block 3) else Statements (block 4) end,判断表达式control_expr紧跟在if或elseif后面;若判断表达式的结果为1,则执行其后的命令语句块(block),若结果为0,则跳过其后的命令语句块;某一命令语句块被执行后,程序跳至end语句后一可执行语句;elseif语句可有任意个,else语句最多只有一个。,page14,实例3:输入三角形三边长,求面积, % Script file: triarea.m % This program is to calculat

13、e the area of a triangular A=input(请输入三角形的三条边(数组形式):);if A(1)+A(2)A(3) elsedisp(不能构成一个三角形。)end, run(C:Program FilesMATLABR2010abintriarea.m) 请输入三角形的三条边(数组形式):3 4 56 run(C:Program FilesMATLABR2010abintriarea.m) 请输入三角形的三条边(数组形式):1 2 3 不能构成一个三角形。,三角形面积海伦公式:,其中:,page15,实例4:求一元二次方程的根,Step 1: 清晰地陈述出你要解决的问

14、题;“求一个一元二次方程的根”,Step 2: 确定程序的输入变量和输出变量;“输入变量:方程系数a, b, c;输出变量:两根x1, x2”,Step 3: 设计程序伪代码;,% 输入方程系数 input a, b, c % 求根过程: % 求根公式,伪代码整体框架:输入方程系数;求根过程;输出求根结果。,page16,Step 3: 设计程序伪代码-续,% if % else if% else (对应 )% end % 输出结果 print x1, x2,Tips:伪代码的设计由上而下,先分析总体框架,再局部细化;伪代码不是真实的Matlab代码,其书写类似于数学表达式;伪代码只需在草稿纸

15、上书写,力求简洁、整齐、清晰。,page17,Step 4: 将伪代码转换为Matlab程序语句,% Script file: calc_roots.m % % Purpose: % This program solves for the roots of a quadratic equation % of the form a*x2 + b*x + c = 0. It calculates the answers % regardless of the type of roots that the equation possesses. % % Record of revisions: %

16、Date Programmer Description of change % = = = % 21/10/13 Y.Y.Guo Original code % % Define variables: % a -Coefficient of x2 term of equation % b -Coefficient of x term of equation % c -Constant term of equation % discriminant -Discriminant of the equation % imag_part -Imag part of equation (for complex roots) % real_part -Real part of equation (for complex roots) % x1 -First solution of equation (for real roots) % x2 -Second solution of equation (for real roots),

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号