第二讲 MATLAB程序设计.

Slides:



Advertisements
Similar presentations
质数和合数 2 的因数( ) 6 的因数( ) 10 的因数 ( ) 12 的因数 ( ) 14 的因数 ( ) 11 的因数 ( ) 4 的因数( ) 9 的因数( ) 8 的因数( ) 7 的因数( ) 1 、 2 、 3 、 4 、 6 、 12 1 、 11 1 、 2 、 5 、 10.
Advertisements

2 和 5 的倍数的特征 运动热身 怎样找一个数的倍数? 从小到大写出 2 的倍数( 10 个): 写出 5 的倍数( 6 个) 2 , 4 , 6 , 8 , 10 , 12 , 14 , 16 , 18 , 20 5 , 10 , 15 , 20 , 25 , 30.
2.8 函数的微分 1 微分的定义 2 微分的几何意义 3 微分公式与微分运算法则 4 微分在近似计算中的应用.
2.6 隐函数微分法 第二章 第二章 二、高阶导数 一、隐式定义的函数 三、可微函数的有理幂. 一、隐函数的导数 若由方程 可确定 y 是 x 的函数, 由 表示的函数, 称为显函数. 例如, 可确定显函数 可确定 y 是 x 的函数, 但此隐函数不能显化. 函数为隐函数. 则称此 隐函数求导方法.
2.5 函数的微分 一、问题的提出 二、微分的定义 三、可微的条件 四、微分的几何意义 五、微分的求法 六、小结.
第六讲 MATLAB 语言程序设计 6.1 MATLAB语言的函数的基本结构 6.2 全局、局部变量、子函数与私有目录
3.4 空间直线的方程.
內地遊學聯盟. 內地遊學聯盟 山東省 著名景點 曲阜 泰山 濰坊 濟南 青島 著名學校 山東大學 中國海洋大學 昌樂第二中學 杜郎口中學 青島大學.
第3章 MATLAB程序设计 3.1 M文件 3.2 程序控制结构 3.3 函数文件 3.4 程序举例 3.5 程序调试
数学软件 Matlab —— 编程基础(脚本文件/函数文件).
圆的一般方程 (x-a)2 +(y-b)2=r2 x2+y2+Dx+Ey+F=0 Ax2+Bxy+Cy2+Dx+Ey+ F=0.
10.2 立方根.
Oracle数据库 Oracle 子程序.
初中数学八年级下册 (苏科版) 10.4 探索三角形 相似的条件(2).
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
在PHP和MYSQL中实现完美的中文显示
第七讲 matlab的程序设计 —— matlab语言称为第四代编程语言,程序简洁、可读性很强而且调试十分容易。
C#程序设计基础 $5 流程控制.
EBNF 请用扩展的 BNF 描述 C语言里语句的结构; 请用扩展的 BNF 描述 C++语言里类声明的结构;
第八章 菜单设计 §8.1 Visual FoxPro 系统菜单 §8.2 为自己的程序添加菜单 §8.3 创建快捷菜单.
走进编程 程序的顺序结构(二).
第五讲  Matlab的程序设计 —— Matlab语言称为第四代编程语言,程序简洁、可读性很强而且调试十分容易, 是Matlab重要组成部分。要充分体现和发挥Matlab的能力,必 须掌握Matlab程序设计.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
Chap 5 函数 5.1 计算圆柱体积 5.2 使用函数编写程序 5.3 变量与函数.
1.2 MATLAB变量表达式与数据格式 MATLAB变量与表达式 MATLAB的数据显示格式
第二章 Java语言基础.
数学软件 西南科技大学网络教育系列课程 数学软件 第10讲 MATLAB程序设计 主讲教师: 鲜大权 副教授 西南科技大学理学院数学系.
第七章 操作符重载 胡昊 南京大学计算机系软件所.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
第一章 函数与极限.
第2章 MATLAB程序设计 编者.
第4章 PHP流程控制语句.
数列.
1.3 C语言的语句和关键字 一、C语言的语句 与其它高级语言一样,C语言也是利用函数体中的可执行 语句,向计算机系统发出操作命令。按照语句功能或构成的不 同,可将C语言的语句分为五类。 goto, return.
C语言程序设计 主讲教师:陆幼利.
2.6 直角三角形(二).
第二单元 第2课 Matlab程序控制结构 1.顺序结构 2.选择结构 3.循环结构.
线 性 代 数 厦门大学线性代数教学组 2019年4月24日6时8分 / 45.
姚金宇 MIT SCHEME 使用说明 姚金宇
用计算器开方.
C语言程序设计 第一章 数据类型, 运算符与表达式 第二章 顺序程序设计 第三章 选择结构程序设计 第四章 循环控制 第五章 数组.
第二章 MATLAB编程与作图 2.1 程序设计 2.2 作图 2.3 在线帮助和文件管理 2.4 习题 2019年4月23日
1.2 有理数 第1课时 有理数 伏家营中学 付宝华.
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
《计算机应用基础》 第9章 程序设计基础(二).
第六章 Excel的应用 一、Excel的单元格与区域 1、单元格:H8, D7, IV26等 2、区域:H2..D8, HS98:IT77
第4章 Excel电子表格制作软件 4.4 函数(一).
第四章 MATLAB程序设计基础 matlab的工作方式:交互式;M文件方式。
第三单元 第2课 实验 一元函数的积分 实验目的:掌握matlab求解有关不定积分和定积分的问题,深入理解定积分的概念和几何意义。
第九节 赋值运算符和赋值表达式.
iSIGHT 基本培训 使用 Excel的栅栏问题
College of Computer Science & Technology
第4课时 绝对值.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
建模常见问题MATLAB求解  .
第7章 模板 陈哲 副教授 南京航空航天大学 计算机科学与技术学院.
第15讲 特征值与特征向量的性质 主要内容:特征值与特征向量的性质.
2019/5/21 实验一 离散傅立叶变换的性质及应用 实验报告上传到“作业提交”。 11:21:44.
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第二节 函数的极限 一、函数极限的定义 二、函数极限的性质 三、小结 思考题.
正弦、余弦函数的性质 华容一中 伍立华 2017年2月24日.
欢迎大家来到我们的课堂 §3.1.1两角差的余弦公式 广州市西关外国语学校 高一(5)班 教师:王琦.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
五 循环结构程序设计 厦大附中信息技术.
第三节 数量积 向量积 混合积 一、向量的数量积 二、向量的向量积 三、向量的混合积 四、小结 思考题.
第二单元 第3课 Matlab命令执行方式 1.Matlab命令执行方式 2.程序调试.
第三讲 程序设计准备知识 一、程序编辑器.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
1.4 M文件与程序设计 文件的操作 命令文件 M函数文件 程序设计语句.
第二次课后作业答案 函数式编程和逻辑式编程
Presentation transcript:

第二讲 MATLAB程序设计

MATLAB有两种工作方式: 交互式的命令行工作方式 M文件的程序工作方式

一. M文件

用MATLAB语言编写的程序,称为M文件。 M文件有两类:命令文件和函数文件。 命令文件:没有输入参数,也不返回输出 参数。 命令文件:没有输入参数,也不返回输出  参数。 函数文件:可以输入参数,也可返回输出参数。

1.M文件的建立与编辑 建立新的M文件: 从MATLAB命令窗口的File菜单中选择New菜单项,再选择M-file命令。 从MATLAB命令窗口的Flie菜单中选择Open M-file命令。

2.命令文件 【例1】 建立一个命令文件将变量a,b的值互换。 一. M文件 将需要运行的命令编辑到一个命令文件中,然后在MATLAB命令窗口输入该命令文件的名字,就会顺序执行命令文件中的命令。 【例1】 建立一个命令文件将变量a,b的值互换。 e31.m文件: a=1:9; b=[11,12,13;14,15,16;17,18,19]; c=a;a=b;b=c; a b 在MATLAB的命令窗口中输入e31,将会执行该命令文件。

二.数据的输入输出

1. input函数:用于向计算机输入一个参数。 二.数据的输入输出 1. input函数:用于向计算机输入一个参数。 调用格式: A=input(提示信息,选项); 注:‘s’选项,则允许用户输入一个字符串。 例如想输入一个人的姓名,可采用命令 xm=input('What''s your name:','s') 【例2】 求一元二次方程a2 +bx+c=0的根。 a=input('a=?'); b=input('b=?'); c=input('c=?'); d=b*b-4*a*c; x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)] 将该程序以aa.m文件存盘,然后运行aa.m文件。

2. pause函数:暂停程序的执行。 3. disp函数:命令窗口输出函数。 二.数据的输入输出 调用格式: pause(延迟秒数) 注:输出项为字符串或矩阵。 例如 A='Hello,MATLAB'; disp(A) 输出为: Hello,MATLAB

三.程序设计

(一)选择结构 1. if语句 格式一: if 条件 三.程序设计 选择结构的语句有if语句和switch语句。 语句组 end 语句组1 else 语句组2 end

三.程序设计 格式三: if 条件1 语句组1 elseif 条件2 语句组2 …… elseif 条件m 语句组m else 语句组m+1 (一)选择结构 格式三: if 条件1 语句组1 elseif 条件2 语句组2 …… elseif 条件m 语句组m else 语句组m+1 end

A=input('请输入三角形的三条边:'); 三.程序设计 (一)选择结构 【例4】 输入三角形的三条边,求面积。 A=input('请输入三角形的三条边:'); if A(1)+A(2)>A(3) & A(1)+A(3)>A(2) & A(2)+A(3)>A(1) p=(A(1)+A(2)+A(3))/2; s=sqrt(p*(p-A(1))*(p-A(2))*(p-A(3))); disp(s); else disp('不能构成一个三角形。') end 运行: 请输入三角形的三条边:[4 5 6] 9.9216

【例5】 输入一个字符,若为大写字母,则输出其后继字符,若为小写字母,则输出其前导字符,若为其他字符则原样输出。 三.程序设计 (一)选择结构 【例5】 输入一个字符,若为大写字母,则输出其后继字符,若为小写字母,则输出其前导字符,若为其他字符则原样输出。 c=input('','s'); if c>='A' & c<='Z' disp(setstr(abs(c)+1)); elseif c>='a'& c<='z' disp(setstr(abs(c)-1)); else disp(c); end

2 switch语句 三.程序设计 switch语句根据变量或表达式的取值不同,分别执行不同的语句。其格式为: 语句组2 …… (一)选择结构 switch语句根据变量或表达式的取值不同,分别执行不同的语句。其格式为: switch 表达式 case 值1 语句组1 case 值2 语句组2 …… case 值m 语句组m otherwise 语句组m+1 end

【例6】 根据变量 num 的值来决定显示的内容。 三.程序设计 (一)选择结构 【例6】 根据变量 num 的值来决定显示的内容。 num=input('请输入一个数'); switch num case -1 disp('I am a teacher.'); case 0 disp('I am a student.'); case 1 disp('You are a teacher.'); otherwise disp('You are a student.'); end

(二)循环结构 1. for语句: 格式: for 循环变量=表达式1:表达式2:表达式3 循环体语句 end 三.程序设计 实现循环结构的语句:for语句和while语句。 1. for语句: 格式: for 循环变量=表达式1:表达式2:表达式3 循环体语句 end 注:其中表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值。步长为1时,表达式2可以省略。

2. while语句 格式为: while (条件) 循环体语句 end 三.程序设计 【例7】 根据例3.6中求y的表达式,求: (二)循环结构 2. while语句 格式为: while (条件) 循环体语句 end 【例7】 根据例3.6中求y的表达式,求: (1)y<3时的最大n值。 (2)与(1)的n值对应的y值。

求y的表达式 三.程序设计 y=0; i=1; while 1 %循环的条件为1,即循环条件总是满足的,这是一个永真循环 (二)循环结构 y=0; i=1; while 1 %循环的条件为1,即循环条件总是满足的,这是一个永真循环 f=1/(2*i-1); y=y+f; if y>3 break; end i=i+1; n=i-1 y=y-f

如果一个循环结构的循环体又包括一个循环结构,就称为循环的嵌套,或称为多重循环结构。 三.程序设计 (二)循环结构 3. 循环的嵌套 如果一个循环结构的循环体又包括一个循环结构,就称为循环的嵌套,或称为多重循环结构。 多重循环的嵌套层数可以是任意的。可以按照嵌套层数,分别叫做二重循环、三重循环等。处于内部的循环叫作内循环,处于外部的循环叫作外循环。

【例8】 求[100,1000]以内的全部素数。 n=0; i=i+1; for m=100:1000 end flag=1; j=m-1; 三.程序设计 (二)循环结构 【例8】 求[100,1000]以内的全部素数。 n=0; for m=100:1000 flag=1; j=m-1; i=2; while i<=j & flag if rem(m,i)==0 flag=0; end i=i+1; end if flag n=n+1; prime(n)=m; prime %变量prime存放素数

四.函数文件

函数文件由function语句引导,其格式为: function 输出形参表=函数名(输入形参表) 注释说明部分 函数体 四. 函数文件 函数文件是另一种形式的M文件,每一个函数文件都定义一个函数。事实上,MATLAB提供的标准函数大部分都是由函数文件定义的。 1.函数文件格式 函数文件由function语句引导,其格式为: function 输出形参表=函数名(输入形参表) 注释说明部分 函数体 注:其中函数名的命名规则与变量名相同。输入形参为函数的输入参数,输出形参为函数的输出参数。当输出形参多于1个时,则应该用方括号括起来。

【例9】 编写函数文件求小于任意自然数n的Fibonacci数列各项。 四. 函数文件 【例9】 编写函数文件求小于任意自然数n的Fibonacci数列各项。 function f=ffib(n) %用于求Fibonacci数列的函数文件 %f=ffib(n) %1999年9月30日编 f=[1,1]; i=1; while f(i)+f(i+1)<n f(i+2)=f(i)+f(i+1); i=i+1; end 将以上函数文件以文件名ffib.m存盘,然后在MATLAB命令窗口输入以下命令,可求小于2 000的Fibonacci数。 ffib(2000)

2.函数调用 [输出实参表]=函数名(输入实参表) 四. 函数文件 2.函数调用 函数文件编制好后,就可调用函数进行计算了。如上面定义ffib函数后,调用它求小于2000的Fibonacci数。 函数调用的一般格式是: [输出实参表]=函数名(输入实参表)

【例10】 利用函数文件,实现直角坐标(x,y)与极坐标(γ,θ)之间的转换。 四. 函数文件 【例10】 利用函数文件,实现直角坐标(x,y)与极坐标(γ,θ)之间的转换。 函数文件tran.m: function [gama,theta]=tran(x,y) gama=sqrt(x*x+y*y); theta=atan(y/x); 调用tran.m的命令文件main1.m: x=input('Please input x=:'); y=input('Please input y=:'); [gam,the]=tran(x,y); gam the 已知转换公式为: 极坐标的矢径:γ= 极坐标的幅角:θ=

【例11】 利用函数的递归调用,求n!。 四. 函数文件 程序运行结果是: fac = function f=factor(n) if n<=1 f=1; else f=factor(n-1)*n; end return; %返回 在命令文件main2.m中调用函数文件factor.m: for i=1:10 fac(i)=factor(i); fac 程序运行结果是: fac = Columns 1 through 6 1 2 6 24 120 720 Columns 7 through 10 504 40320 362880 3628800

3 .函数所传递参数的可调性 MATLAB在函数调用上有一个与众不同之处:函数所传递参数数目的可调性。凭借这一点,一个函数可完成多种功能。 四. 函数文件 3 .函数所传递参数的可调性 MATLAB在函数调用上有一个与众不同之处:函数所传递参数数目的可调性。凭借这一点,一个函数可完成多种功能。 在调用函数时,MATLAB用两个永久变量nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数。只要在函数文件中包含这两个变量,就可以准确地知道该函数文件被调用时的输入输出参数个数,从而决定函数如何进行处理。

【例12】 nargin用法示例 四. 函数文件 命令文件mydemo.m: x=[1:3];y=[1;2;3]; 函数文件examp.m: examp(x) examp(x,y') examp(x,y,3) 函数文件examp.m: function fout=charray(a,b,c) if nargin==1 fout=a; elseif nargin==2 fout=a+b; elseif nargin==3 fout=(a*b*c)/2; end 执行mydemo.m后的输出是: ans = 1 2 3 2 4 6 21

五.全局变量和局部变量

四. 函数文件 在MATLAB中,全局变量用命令global定义。函数文件的内部变量是局部的,与其他函数文件及MATLAB工作空间相互隔离。但是,如果在若干函数中,都把某一变量定义为全局变量,那么这些函数将公用这一个变量。全局变量的作用域是整个MATLAB工作空间,即全程有效。所有的函数都可以对它进行存取和修改。因此,定义全局变量是函数间传递信息的一种手段。 【例13】 全局变量应用示例 在命令窗口中输入: global ALPHA BETA ALPHA=1; BETA=2; s=wadd(1,2) 输出为: s = 5 先建立函数文件wadd.m,该函数将输入的参数加权相加。 function f=wadd(x,y) %add two variable global ALPHA BETA f=ALPHA*x+BETA*y;

习 题 1. 输入20个数,求其中最大数和最小数。要求分别用循环结构和调用MATLAB的max函数、min函数来实现。 习 题 1. 输入20个数,求其中最大数和最小数。要求分别用循环结构和调用MATLAB的max函数、min函数来实现。 2. 求Fibonacci数列 (1)大于4000的最小项。 (2)5000之内的项数。

3. 写出下列程序的输出结果: s=0; a=[12,13,14;15,16,17;18,19,20;21,22,23]; for k=a for j=1:4 if rem(k(j),2)~=0 s=s+k(j); end s