2015MATLAB-03

Download Report

Transcript 2015MATLAB-03

Mathematical Modeling and MATLAB
数学建模与MATLAB
主讲人:孙越
数学建模与MATLAB
第三讲:MATLAB程序设计(1)
2015/4/20
§3.1
M文件
数学建模与MATLAB
2
M文本编辑器的基本知识
• M文件的语法类似于一般高级语言,是一种程序化的编程
语言。
• 但是,与传统的高级语言相比,M文件又有自己的特点。
• 它只是一个简单的ASCII型码文本文件,因此,它的语法
比一般的高级语言要简单,程序也容易调试,并且有很好
的交互性。
• 文件名必须以英文字符开头,且不包含运算符,不与变量
名函数名重复。
• M文件分为脚本文件和函数文件。
数学建模与MATLAB
3
M文件的建立与运行
数学建模与MATLAB
4
M文件的建立与运行
数学建模与MATLAB
5
脚本M文件
• 脚本文件是命令的集合,是由一系列MATLAB命令、内置
函数及M文件等组成的文件。它是M文件中最简单的一种
,不需要输入、输出参数,用命令语句可以控制MATLAB
命令工作空间的所有数据。在运行过程中,产生的所有变
量均是命令工作空间变量,这些变量一旦生成,就一直保
持在内存空间中,除非用户执行clear命令将它们清除。
• 运行一个脚本文件等价于从命令窗口中顺序运行文件里的
语句。由于脚本文件只是一串命令的集合,因此,只需像
在命令窗口中输入语句那样,依次将语句编辑在脚本文件
,然后在MATLAB命令窗口输入该命令文件的名字就会顺
序执行命令文件中的命令。
数学建模与MATLAB
6
函数M文件
•
函数M文件是第一个可执行语句以function开始的M文件
,每一个函数文件都定义一个函数,它可以接受参数、也
可以返回参数。
• 格式
function [输出变量组]=函数名(输入变量组)
注释说明部分
函数体
end
数学建模与MATLAB
7
§3.2
程序设计
数学建模与MATLAB
8
关系运算符
运算符
说明
运算符
说明
<
小于
<=
小于或等于
>
大于
>=
大于或等于
==
等于
~=
不等于
数学建模与MATLAB
9
逻辑运算符
• 逻辑真:1
逻辑假:0
与运算:&
或运算:|
非运算:~
1&1=1
1&0=0
0&0=0
1|1=1
1|0=1
0|0=0
~1=0
~0=1
数学建模与MATLAB
10
运算符优先级
• 当将多个运算符和变量写成一个MATLAB表达式时,运算
符的优先次序必须明确。
优先级
最高
运算符
圆括号 ()
↓
转置 (.’),共轭转置 (‘),乘方 (.^),矩阵乘方 (^)
↓
逻辑非(~)
↓
乘法 (.*),矩阵乘法 (*),右除 (./),左除 (.\),矩阵右除 (/),矩阵左除 (\)
↓
加法 (+),减法 (-)
↓
冒号运算符 (:)
↓
小于 (<),小于等于 (<=),大于 (>),大于等于 (>=),等于 (==),不等于 (~=)
↓
逻辑与 (&)
最低
逻辑或 ( | )
数学建模与MATLAB
11
例题
A= 1 2 3 4 5 6 7 8 9
B= 9 8 7 6 5 4 3 2 1
L=
• L1=A<4
• L2=A>3&B<6
• L3=A>3 | B<6
数学建模与MATLAB
12
程序设计三种结构
• MATLAB语言提供三种结构化语句来控制程序的
执行流程:
• 顺序结构:
– 一种按书写顺序执行的结构。
• 选择结构:
– 根据运行时的情况自动选择要执行的语句。
• 循环结构:
– 根据情况自动重复执行有关语句。
数学建模与MATLAB
13
顺序结构
• 顺序结构即按照语句书写顺序执行的程序结构。
A
B
数学建模与MATLAB
14
顺序结构程序举例
• 使用脚本式M文件绘制一个正弦曲线:
数学建模与MATLAB
15
课堂练习
• 现有一份学生成绩:
45 69 78 96 32 95 88 79 85 74
• 创建M文件,利用顺序结构,编程计算:
• (1)平均分
• (2)及格人数
• (3)小于40分和大于等于90分的人数
数学建模与MATLAB
16
答案
clear;
clc;
A=[45 69 78 96 32 95 88 79 85 74];
a=sum(A)/sum(A>0);
b=sum(A>60);
c=sum(A<40|A>=90);
fprintf('平均分:%4.2f分\n及格人数:%d人\n高分低分
人数:%d人\n',a,b,c);
数学建模与MATLAB
17
选择结构
• 选择结构又称为分支结构,是指有条件地选择要
执行的程序段。
K
真(非0)
A
条件
K≠k1…kn
假(0)
K=k1
K=k2
B
A1
数学建模与MATLAB
A2
K=ki
…
Ai
……
B
18
if-else-end语句
• 1、单分支 if-end 结构
• 格式
if 表达式
执行代码块
end
• 这是最简单的判断语句,只有一个判断语句,其中的表达
式为逻辑表达式,当表达式为真时,执行相应的语句,否
则,直接跳到下一段语句。
数学建模与MATLAB
19
if-else-end语句
• 2、双分支 if…else…end 结构
• 当程序有两个选择时,可以选择 if…else…end 结构,此时
程序结构为:
if 表达式
执行代码块1
else
执行代码块2
end
• 当判断表达式为真时,执行代码块1,否则执行代码块2。
数学建模与MATLAB
20
开始
例题1
• 输入两个整数,输出其中较大的数。
输入x、y
真
假
x>y
max=x
max=y
输出max
结束
数学建模与MATLAB
21
例题2
• 从键盘输入一个年份,判断是否是闰年。
• 公历闰年计算方法(按一回归年365天5小时48分45.5秒)
• 1、普通年能整除4且不能整除100的为闰年。(如2004年
就是闰年,1901年不是闰年)
• 2、世纪年能整除400的是闰年。(如2000年是闰年,1900
年不是闰年)
数学建模与MATLAB
22
例题2
• 从键盘输入一个年份,判断是否是闰年。
disp('请输入一个年份:');
x=input('year=');
if mod(x,400)==0 | (mod(x,4)==0 & mod(x,100)~=0)
fprintf('%d是闰年!\n',x);
else
fprintf('%d不是闰年!\n',x);
end
数学建模与MATLAB
23
例题2
• 从键盘输入一个年份,判断是否是闰年。
• 公历闰年计算方法(按一回归年365天5小时48分45.5秒)
• 1、普通年能整除4且不能整除100的为闰年。(如2004年
就是闰年,1901年不是闰年)
• 2、世纪年能整除400的是闰年。(如2000年是闰年,1900
年不是闰年)
• 3、对于数值很大的年份,这年如果能被3200整除,并且能被
172800整除则是闰年(即出现限制条件,仅被3200整除的
年份不是闰年) 。如172800年是闰年,86400年不是闰年(
因为虽然能被3200整除,但不能被172800整除)。
数学建模与MATLAB
24