MATLAB程序设计
MATLAB程序设计及应用实例
注意:等号左边是方括号,右边输入参数用括号
第14页,共67页。
例1 编写函数文件求半径为r的圆的面积和周长
function [s,p]=fcircle(r)
%FCIRCLE calculate the area and perimeter of a circle of radii r
disp函数
调用格式为
disp(输出项) 其中输出项既可以为字符串,也可以为矩阵。 注意:用disp函数显示矩阵时将不显示矩阵的 名字,而且其格式更紧密,且不留任何没有意 义的空行。
第22页,共67页。
例 求一元二次方程ax2+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)];
c=input('请输入一个字符','s'); if c>='A' & c<='Z'
disp(setstr(abs(c)+1)); elseif c>='a'& c<='z'
disp(setstr(abs(c)-1)); elseif c>='0'& c<='9'
disp(abs(c)-abs('0')); else
end 命令文件main5_2.m:
2024版《Matlab程序设计》课件
基本操作
演示如何在Matlab中进行基本操作,如输入命令、 查看变量、保存工作等。
快捷键与技巧
分享一些常用的快捷键和操作技巧,提高使用效 率。
2024/1/29
6
变量、数据类型与运算符
变量命名规则
说明在Matlab中如何给变量命名,以及命名时需要 注意的事项。
数据类型
介绍Matlab中常见的数据类型,如数值型、字符型、 逻辑型等,并给出相应的示例。
图像基本处理
包括灰度化、二值化、滤波等基本图像处理 操作。
图像变换
通过傅里叶变换、小波变换等方法对图像进 行频域分析和处理。
2024/1/29
图像增强
采用直方图均衡化、对比度拉伸等方法改善 图像质量。
33
动画制作和交互式绘图
2024/1/29
动画制作
01
使用for循环结合pause函数实现动画效果,展示数据动态变化
向量的加法和减法
对应元素相加或相减,要求两个向量的长度相同。
向量的点积和叉积
点积对应元素相乘后求和,叉积仅适用于三维向量,按照右手定则计 算。
向量的模和单位化
向量的模等于各元素平方和的平方根,单位化是将向量除以其模长得 到单位向量。
11
特殊矩阵和函数
对角矩阵
除对角线外其他元素均为零的方 阵。
上三角和下三角矩阵
15
条件判断语句
2024/1/29
switch语句
用于根据表达式的值执行不同的代码块。
语法
switch expression, case value1, statements1, case value2, statements2, ..., otherwise, statements, end
matlab教程(全)09Matlab程序设计
2020/11/8
Application of Matlab Language
14
5.5 Matlab矩阵分析与处理
5.5.1 特殊矩阵 常见的特殊矩阵有零矩阵、幺矩阵、单位矩阵等,这类特殊矩阵在应用
中具有通用性。 1、通用的特殊矩阵 常用的产生通用殊矩阵的函数有: zeros:产生全0矩阵(零矩阵)。 ones: 产生全1矩阵(幺矩阵)。 eye: 产生单位矩阵。 rand:产生0~1间均匀分布的随机矩阵。 randn:产生均值为0,方差为1的标准正态分布随机矩阵。
5.4.1 程序调试概述 一般说来,应用程序的错误有两类,一类是语法错误,另一类是运行时
的错误。语法错误,给出相应的错误信息,并标出错误在程序中的行 号。例如:输入下列程序: A = 87;
B = 9.3;
C = A+*B; 系统将给出错误信息:
??? Error: File: Untitled1.m Line: 3 Column: 7
2020/11/8
Application of Matlab Language
4
说明:
将以上函数文件以文件名fcircle.m保存,然后在命令窗口调用。
[s,p] = fcircle(10) 输出结果是: s=
314.1593 p=
62.8319 采用help命令或lookfor命令可以显示出注释说明部分的内容。 help fcircle 屏幕显示
进行存取和修改。
全局变量用global命令定义,格式为:
global 变量名
例5.13 全局变量应用示例。
先建立函数文件wadd.m,该函数将输入的参数加权相加:
function f = wadd(x,y)
matlab 程序设计
【例5.8】用try... catch... end结构来进行矩阵相乘运算. 例
% EX0508 try结构 n=4; a=magic(n); m=3; b=eye(3); try c=a*b catch c=a(1:m,1:m)*b end lasterr
5.2.6 流程控制语句
break, continue, return, pause, keyboard, input 1. break命令 命令 break命令可以使包含break的最内层的for或while 语句强制终止,立即跳出该结构,执行end后面的命令, break命令一般和if结构结合使用.
5.2.4 switch…case开关结构
语法: switch 开关表达式 case 表达式 表达式1 语句段1 语句段 case表达式2 case表达式2 表达式 语句段2 语句段 ... otherwise 语句段n 语句段 end
说明: (1) 将开关表达式依次与case后面的表达式进行比较,如 果表达式1不满足,则与下一个表达式2比较,如果都不 满足则执行otherwise后面的语句段n;一旦开关表达式 与某个表达式相等,则执行其后面的语句段. (2) 开关表达式只能是标量或字符串. (3) case后面的表达式可以是标量,字符串或元胞数组, 如果是元胞数组则将开关表达式与元胞数组的所有元素 进行比较,只要某个元素与开关表达式相等,就执行其 后的语句段.
(2) 将函数文件保存为"Ex0502.m". (3) 在MATLAB命令窗口输入以下命令,则会出现f的计算值 注意: 注意:M脚本文件和M函数文件的文件名及函数名的命名规 和绘制的曲线:f=Ex0502(0.3) 则与MATLAB变量的命名规则相同.
《MATLAB程序设计》实验指导书
三、
实验仪器和设备
1、 计算机一台。 2、 MATLAB7.0 以上集成环境。
四、
预习要求
2
《MATLAB 程序设计》实验指导书
1、 复习 MATLAB 的启动与Байду номын сангаас出,熟悉 MATLAB 运行环境。 2、 复习 MATLAB 中矩阵的生成以及矩阵运算的基本原理。
五、
实验内容及步骤
实验内容:
1、 求下列表达式的值 1) z1
5
《MATLAB 程序设计》实验指导书
2) 函数调用 函数文件编制好后,就可调用函数进行计算了。函数调用的一般格式为 [输出实参表]=函数名(输入实参表) 注意:函数调用时各实参出现的顺序、个数,应与函数定义时形参的顺序、个 数一致,否则会出错。函数调用时,实参先传递给形参,然后再执行函数功能。 5、 选择结构 1) if 语句 a) 单分支 if 语句 if 条件 语句块 end b) 双分支 if 语句 if 条件 语句块 1 else 语句块 2 end c) 多分支 if 语句 if 条件 1 语句块 1 elseif 条件 2 语句块 2 …… elseif 条件 n 语句块 n else 语句块 n+1 end 2) switch 语句 switch 表达式 case 结果表 1 语句块 1 case 结果表 2 语句块 2 ……
二、
实验原理
1、 M 文件 用 MATLAB 语言编写的程序,称为 M 文件,它们的扩展名均为.m。M 文件根据 调用方式的不同分为两类,命令文件(Script file)和函数文件(Function file) 。 2、 建立新的 M 文件 启动 MATLAB 文本编辑器有 3 种方法: 1) 单击工具栏上的“New M-File”命令按钮。 2) 从 MATLAB 主窗口的“File”菜单中选择“New”菜单项,再选择“M-file”命令。 3) 在 MATLAB 命令窗口输入命令“edit”。 3、 打开已有的 M 文件 1) 在当前目录窗口选中要打开的 M 文件,双击鼠标左键。 2) 单击 MATLAB 主窗口工具栏上的“Open File”命令按钮,再从弹出的对话框中 选择所需打开的 M 文件。 3) 从 MATLAB 主窗口的“File”菜单中选择“Open”命令,在“Open”对话框中选中 所需打开的文件。 4) 在 MATLAB 命令窗口输入命令“edit 文件名” 。 4、 函数文件 1) 函数文件的基本结构 函数文件由 function 语句引导,其基本结构为: function 输出形参表=函数名(输入形参表) 注释说明部分 函数体语句 注意:函数名的命名规则与变量名相同。当输出形参多于一个时,应用方括号 括起来。
第4章MATLAB程序设计
例 求一个值n,使n!最大但小于1050。 MATLAB程序如下: %初始化 r=1;k=1; 执行后结果如下: %做循环 The 41!Is while r<1e50 3.345253e+049 r=r*k; k=k+1; end k=k-1;r=r/k;k=k-1; % 输出结果 disp(['The',num2str(k),'!is',num2str(r)])
4.2.3 循环结构 for 循环:可完成指定次重复的循环,且在循环开 始之前,就知道代码重复的次数。
while 循环:while语句可完成不定次重复的循 环,与for语句不同,每次循环前要先判断条件 是否满足,再决定循环是否进行。
例 利用rand函数产生10个随机数,然后利用嵌套 for循环进行从小到大排序。
2 1.5 1 0.5 0 150 100 50
然后通过调用函数fun计算出z, 并利用mesh绘制出网格线。 编写的脚本文件如下: % 坐标系准备 x=[0:.02:2]; y=[-2:.02:0]; % 调用函数计算函数值 z=fun(x,y); % 绘图 figure mesh(z)
150 100 50
4.3.2 函数的调用 函数调用的一般格式如下: [输出实参表] = 函数名(输入实参表) 要注意的是,函数调用时各实参出现的顺 序、个数,应与函数定义时形参的顺序、 个数一致,否则会出错。函数调用时,先 将实参传递给相应的形参,从而实现参数 传递,然后再执行函数的功能。
例 对于函数
z ( x 1)2 ( y 1)2
fprintf函数中,format字符中常常会使用到一些特 殊字符来灵活的实现一些显示功能 format string 结果 %d %e %f %g 把值作为整数来处理 用科学记数法来显示数据 用于格式化浮点数,并显示这个 数 用科学记数格式,或浮点数格式, 根据那个表示的数位短,显示那 个 转到新的一行
实验一MATLAB程序设计入门
实验一MATLAB程序设计入门熟悉matlab界面;掌握matlab的变量的命名规则;掌握常用数学运算符号和标点符号的使用方法;掌握常用数学函数的使用方法;掌握建立和使用M文件的方法;学会创建简单的数组并对数组元素进行访问,掌握数组的各种运算;学会创建数组并对数组元素进行访问和操做,掌握矩阵的各种运算规则;掌握关系与逻辑运算符的使用规则;实验原理与方法一、变量与函数1、变量变量是任何程序设计语言的基本元素之一,MATLAB 语言当然也不例外。
与常规的程序设计语言不同的是,MATLAB 语言并不要求对所使用变量进行事先声明,也不需要指定变量类型,它会自动根据所赋予变量的值或对变量所进行的操作来确定变量的类型;在赋值过程中,如果变量已存在,MATLAB 语言将使用新值代替旧值,并以新的变量类型代替旧的变量类型。
在MATLAB 语言中变量的命名遵守如下规则:(1)变量名必须是不含空格的单个词;(2)变量名以字母开头,变量名中可包含字母、数字、下划线,但不能使用标点;(3)变量名长度不超过31位,第31个字符之后的字符将被忽略;(4)变量名区分大小写;(5)关键字(如if、while等)以及固有函数(如max,sum等)不能作为变量名;与其他的程序设计语言相同,MATLAB 语言中也存在变量作用域的问题。
在未加特殊说明的情况下,MATLAB 语言将所识别的一切变量视为局部变量,即仅在其调用的M文件内有效。
若要定义全局变量,应对变量进行声明,即在该变量前加关键字global。
一般来说,全局变量常用大写的英文字符表示,尽管这不是MATLAB 语言所必需的。
特殊变量:MATLAB 有一些预定义的变量,这些特殊的变量称为常量。
下表给出了MATLAB 语言中经常使用一些常量及其说明。
2、数学运算符号及标点符号(1)MATLAB的每条命令后,若为逗号或无标点符号,则显示命令的结果;若命令后为分号,则禁止显示结果.(2)“%” 后面所有文字为注释. (3)“...”表示续行.3、数学函数二、数组与矩阵1、创建简单的数组x=[a b c d e f ] 创建包含指定元素的行向量x=first:last 创建从first开始,加1计数,到last结束的行向量x=first:increment:last 创建从first开始,加increment计数,last结束的行向量x=linspace(first,last,n)创建从first开始,到last结束,有n个元素的行向量x=logspace(first,last,n)创建从first开始,到last结束,有n个元素的对数分隔行向量.例:x=linspace(1,2,10)y=10.^(x)z=logspace(1,2,10)2、数组元素的访问(1)访问一个元素:x(i)表示访问数组x的第i个元素.(2)访问一块元素:x(a :b :c)表示访问数组x的从第a个元素开始,以步长为b到第c个元素(但不超过c),b可以为负数,b缺损时为1.(3)直接使用元素编址序号. x([a b c d]) 表示提取数组x的第a、b、c、d个元素构成一个新的数组[x(a) x(b) x(c) x(d)]. 3、数组的方向前面例子中的数组都是一行数列,是行方向分布的. 称之为行向量. 数组也可以是列向量,它的数组操作和运算与行向量是一样的,唯一的区别是结果以列形式显示.产生列向量有两种方法:直接产生例c=[1;2;3;4] 转置产生例b=[1 2 3 4]; c=b’说明:以空格或逗号分隔的元素指定的是不同列的元素,而以分号分隔的元素指定了不同行的元素.4、数组的运算(1)标量-数组运算数组对标量的加、减、乘、除、乘方是数组的每个元素对该标量施加相应的加、减、乘、除、乘方运算. 设:a=[a1,a2,…,an], c=标量则:a+c=[a1+c,a2+c,…,an+c] a.*c=[a1*c,a2*c,…,an*c]a./c= [a1/c,a2/c,…,an/c](右除)a.\c= [c/a1,c/a2,…,c/an] (左除)a.^c= [a1^c,a2^c,…,an^c] c.^a= [c^a1,c^a2,…,c^an](2)数组-数组运算当两个数组有相同维数时,加、减、乘、除、幂运算可按元素对元素方式进行的,不同大小或维数的数组是不能进行运算的. 设:a=[a1,a2,…,an], b=[b1,b2,…,bn] 则:a+b= [a1+b1,a2+b2,…,an+bn]a.*b= [a1*b1,a2*b2,…,an*bn] a./b= [a1/b1,a2/b2,…,an/bn] a.\b=[b1/a1,b2/a2,…,bn/an]a.^b=[a1^b1,a2^b2,…,an^bn] (3)数组维数:length(a)5、矩阵的建立逗号或空格用于分隔某一行的元素,分号用于区分不同的行;除了分号,在输入矩阵时,按Enter键也表示开始一新行;输入矩阵时,严格要求所有行有相同的列.例:m=[1 2 3 4 ;5 6 7 8;9 10 11 12] p=[1 1 1 1 2 2 2 2 3 3 3 3] 特殊矩阵的建立:a=[ ] 产生一个空矩阵,当对一项操作无结果时,返回空矩阵,空矩阵的大小为零.b=zeros(m,n) 产生一个m行、n列的零矩阵c=ones(m,n) 产生一个m行、n列的元素全为1的矩阵d=eye(m,n) 产生一个m行、n列的单位矩阵6、矩阵中元素的操作(1)矩阵A的第r行:A(r,:)(2)矩阵A的第r列:A(:,r)(3)依次提取矩阵A的每一列,将A拉伸为一个列向量:A(:)(4)取矩阵A的第i1~i2行、第j1~j2列构成新矩阵:A(i1:i2, j1:j2) (5)以逆序提取矩阵A的第i1~i2行,构成新矩阵:A(i2:-1:i1,:)(6)以逆序提取矩阵A的第j1~j2列,构成新矩阵:A(:, j2:-1:j1 )(7)删除A的第i1~i2行,构成新矩阵:A(i1:i2,:)=[ ] (8)删除A的第j1~j2列,构成新矩阵:A(:,j1:j2)=[ ] (9)将矩阵A和B拼接成新矩阵:[A,B];[A;B]7、矩阵的运算(1)标量-矩阵运算:同标量-数组运算。
第七章 MATLAB程序设计
1、输入程序: %对两个矩阵相 加 clc clear a=[1,2,3]; b=[4,5,6]; c=a+b
3、在命令窗口输入 myadd,回车 或打开文件,点击运 行按钮 给出结果: c=
5
7
9
18
打开已有的M文件,也有3种方法: (1) 菜单操作。从MATLAB主窗口的File菜单 中选择Open命令,则屏幕出现Open对话框, 在Open对话框中选中所需打开的M文件。在 文档窗口可以对打开的M文件进行编辑修改, 编辑完成后,将M文件存盘。 (2) 命令操作。在MATLAB命令窗口输入命令: edit 文件名,则打开指定的M文件。 (3) 命令按钮操作。单击MATLAB主窗口工具 栏上的Open File命令按钮,再从弹出的对话 框中选择所需打开的M文件。
直接访问work space 通过函数形参传递数据 中所有变量 直接选取MATLAB中 精心设计完成指定功能 执行的语句 重复操作 MATLAB功能扩展
7
1.3 M文件的创建
m文件的类型是普通的文本文件,我们可以使用 系统认可的文本文件编辑器来建立m文件。如 MATLAB下的m文件编辑器、windows的记事 本和word等。
s=pi*r*r; p=2*pi*r;
24
特定规则:
1.函数m文件第一行必须以单词function作为引导词,表示该M文件是一 个函数文件,必须遵循如下形式: function <因变量>=<函数名>(<自变量>)
2.函数名的命名规则与变量名相同,m文件的文件名必须是 <函数名> .m。 3.输入形参为函数的输入参数,输出形参为函数的输出参数。当输出形 参多于一个时,则应该用方括号括起来。 4.程序中的变量均为局部变量,不保存在工作空间中。其变量只在函数 运行期间有效。
matlab程序课程设计
matlab程序课程设计一、教学目标本课程的教学目标是使学生掌握MATLAB编程的基本知识和技能,能够运用MATLAB解决简单的数学和工程问题。
具体目标如下:1.理解MATLAB的基本概念,如变量、矩阵、数组等。
2.掌握MATLAB的基本语法,如运算符、函数、循环和条件语句等。
3.了解MATLAB的绘图功能,能够绘制基本的图形。
4.能够使用MATLAB进行简单的数学计算和数据分析。
5.能够编写MATLAB脚本程序,解决实际问题。
6.能够使用MATLAB的绘图功能,进行数据可视化。
情感态度价值观目标:1.培养学生的计算机编程思维,提高解决问题的能力。
2.培养学生团队合作的精神,提高沟通与协作能力。
3.培养学生对科学研究的兴趣,提高创新意识。
二、教学内容根据教学目标,本课程的教学内容主要包括以下几个方面:1.MATLAB概述:介绍MATLAB的发展历程、功能特点和应用领域。
2.MATLAB基本语法:变量、矩阵、数组、运算符、函数、循环和条件语句等。
3.MATLAB绘图功能:基本图形绘制、图形编辑和格式设置等。
4.MATLAB编程实践:数学计算、数据分析、实际问题解决等。
5.第1周:MATLAB概述和基本语法。
6.第2周:MATLAB绘图功能。
7.第3周:MATLAB编程实践(数学计算和数据分析)。
8.第4周:MATLAB编程实践(实际问题解决)。
三、教学方法为了达到教学目标,本课程将采用以下教学方法:1.讲授法:讲解MATLAB的基本概念、语法和绘图功能。
2.案例分析法:分析实际问题,引导学生运用MATLAB编程解决。
3.实验法:上机操作,让学生亲手编写MATLAB程序,巩固所学知识。
4.小组讨论法:分组完成项目任务,培养团队合作和沟通能力。
四、教学资源为了支持教学内容和教学方法的实施,本课程将采用以下教学资源:1.教材:《MATLAB程序设计》。
2.参考书:提供一些MATLAB编程的参考书籍,供学生自主学习。
MATLAB程序设计第一讲
• 2.lookfor命令 help命令只搜索出那些关键字完全匹配的结 果,lookfor命令对搜索范围内的M文件进 行关键字搜索,条件比较宽松。 lookfor命令只对M文件的第一行进行关键 字搜索。若在lookfor命令加上-all选项,则 可对M文件进行全文搜索。
2.绘图功能 MATLAB提供了两个层次的绘图操作:一 种是对图形句柄进行的低层绘图操作,另 一种是建立在低层绘图操作之上的高层绘 图操作。 利用MATLAB的高级图形命令可以轻而易 举地绘制二维、三维乃至四维图形,并可 进行图形和坐标的标识、视角和光照设计、 色彩精细控制等等。
3.编程语言 MATLAB具有程序结构控制、函数调用、 数据结构、输入输出、面向对象等程序语 言特征,而且简单易学、编程效率高。 4.MATLAB工具箱 MATLAB包含两部分内容:基本部分和各 种可选的工具箱。 MATLAB工具箱分为两大类:功能性工具 箱和学科性工具箱。
1.5 变量和数据操作
1.5.1 变量与赋值 1.变量命名规则 (i).变量名必须是以字母开头,后可接字 母、数字或下划线; (ii). 变量名最多不超过63个字符; (iii).变量名严格区分字母的大小写。
2.赋值语句 (1) 变量=表达式 (2) 表达式 其中表达式是用运算符将有关运算量连接 起来的式子,其结果可以是一个数值,也 可以是一个矩阵。 • MATLAB书写表达式的规则与“手写算式” 差不多相同。 • 如果一个指令过长可以在结尾加上...(代表 此行指 令与下一行连续)。
实验1-----Matlab程序设计及绘图
实验一:Matlab程序设计及绘图一、实验目的1、掌握 Matlab 软件使用的基本方法;2、熟悉 Matlab 的编程方法;3、熟悉 Matlab 绘图命令及基本绘图控制。
二、实验内容1.基本绘图命令(1)绘制余弦曲线 y=cos(t),t∈[0,2π](2)在同一坐标系中绘制余弦曲线 y=cos(t-0.25)和正弦曲线 y=sin(t-0.5), t∈[0,2π]2.基本绘图控制绘制[0,4π]区间上的 x1=10sint 曲线,并要求:(1)线形为点划线、颜色为红色、数据点标记为加号;(2)坐标轴控制:显示范围、刻度线、比例、网络线(3)标注控制:坐标轴名称、标题、相应文本;3.程序设计:找出从2开始的前100个素数,并依次排列显示。
三、实验原理MATLAB环境是一种为数值计算、数据分析和图形显示服务的交互式的环境。
MATLAB有3种窗口,即:命令窗口(The Command Window)、m-文件编辑窗口(The Edit Window)和图形窗口(The Figure Window),而Simulink另外又有Simulink模型编辑窗口。
1.命令窗口(The Command Window)当MATLAB启动后,出现的最大的窗口就是命令窗口。
用户可以在提示符“>>”后面输入交互的命令,这些命令就立即被执行。
在MATLAB中,一连串命令可以放置在一个文件中,不必把它们直接在命令窗口内输入。
在命令窗口中输入该文件名,这一连串命令就被执行了。
因为这样的文件都是以“.m”为后缀,所以称为m-文件。
2.m-文件编辑窗口(The Edit Window)我们可以用m-文件编辑窗口来产生新的m-文件,或者编辑已经存在的m-文件。
在MATLAB主界面上选择菜单“File/New/M-file”就打开了一个新的m-文件编辑窗口;选择菜单“File/Open”就可以打开一个已经存在的m-文件,并且可以在这个窗口中编辑这个m-文件。
实验五-MATLAB的程序设计
实验五MATLAB的程序设计一、实验目的1.熟悉MATLAB 的编程环境;2.熟悉和掌握脚本文件和函数文件建立与使用方法;3.掌握MATLAB程序设计的流程控制语句;4.掌握函数调用和参数传递;5.熟悉MATLAB 程序调试方法。
二、实验仪器1.计算机2.MATLAB 软件环境三、实验指导1. M 文本文件介绍一个M 文件通常包含五个部分,函数定义语句、H1 帮助行、帮助文本、函数体或者脚本文件语句和注释语句。
一个完整的M 文件的结构为:function f = fact(n) 函数定义语句% Compute a factorial value. H1 行% FACT(N) returns the factorial of N, 帮助文本% usually denoted by N!% Put simply, FACT(N) is PROD(1:N). 注释语句f = prod(1:n); 函数体函数定义语句只在函数文件中存在,定义函数名称、输入输出参数的数量和顺序。
函数定义语句的格式为:function y = fact(x)2. 函数流程控制顺序结构顺序结构是最简单的程序结构,系统在编译程序时,按照程序的物理位置顺序执行。
这种程序容易编制,但是结构单一,能够实现的功能有限。
判断语句(if…else…end)if…endif…else…endif…elseif…else…end1)if…end此时的程序结构如下:if 表达式执行代码块end这是最简单的判断语句,只有一个判断语句,其中的表达式为逻辑表达式,当表达式为真时,执行相应的语句,否则,直接跳到下一段语句。
2)if…else…end当程序有两个选择时,可以选择if…else…end 结构,此时程序结构为:if 表达式执行代码块1else执行代码块2end当判断表达式为真时,执行代码块1,否则执行代码块2。
3)if…elseif…else…end上面的两种形式中,分别包含一个选择和两个选择,当判断包含多个选择时,可以采用elseif 语句,结构为:if 表达式1执行代码块1elseif 表达式2执行代码块2elseif ..................else执行代码块end其中可以包含任意多个elseif 语句。
第6章 MATLAB程序设计
如果用户调用toc时不指定输出参数t, 例如: >> tic >> toc elapsed_time = 4.0160 函数在命令窗口显示函数工作空间变量 elapsed_time 的值,但在MATLAB命令工作空间里不给输出参数t赋任 何值,也不创建变量t。
如果如果用户调用toc时指定输出参数t,例如: >> tic >> out=toc out = 2.8140 则以变量out的形式返回到命令窗口,并在 MATLAB命令工作空间里创建变量out。
function y = linspace(d1, d2, n) %LINSPACE Linearly spaced vector. if nargin == 2 n = 100; end n = double(n); y = [d1+(0:n-2)*(d2d1)/(floor(n)-1) d2];
function t=toc % TOC Read the stopwatch timer.
Global TICTOC If nargout<1 elapsed_time=etime(clock,TICTO C) else t=etime(clock,TICTOC); end
(8)全局变量可以为编程带来某些方便,但却破坏了函 数对变量的封装,所以在实际编程中,无论什么时候都应 尽量避免使用全局变量。如果一定要用全局变量,建议全 局变量名要长、采用大写字母,并有选择地以首次出现的 M文件的名字开头,使全局变量之间不必要的互作用减至 最小。 (9)MATLAB以搜寻脚本文件的同样方式搜寻函数文件。 例如,输入>>cow,MATLAB首先认为cow是一个变 量;如果它不是,那么MATLAB认为它是一个内置函数; 如果还不是,MATLAB检查当前cow.m的目录或文件夹; 如果仍然不是,MATLAB就检查cow.m在MATLAB搜 寻路径上的所有目录或文件夹。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MATLAB程序设计MATLAB提供了一个完善的程序设计语言环境,使用户能够方便地编制复杂的程序,完成各种计算。
本节先介绍关系运算、逻辑运算,再介绍M-文件(即程序文件)的结构及MATLAB的程序控制流语句。
一、关系运算和逻辑运算1.关系运算(1)关系运算符:< ;< = ;> ;> = ;= = ;~ =(2)关系表达式:用关系运算符将两个同类型的量(表达式)连接起来的式子。
【注】①关系运算本质上是标量运算,关系表达式的值是逻辑值(0-假1-真);②当作用于两个同样大小矩阵时,则分别对两个矩阵的对应元素运算,结果是一个0-1矩阵。
例1.对向量进行关系运算。
>> A=1:5,B=5:-1:1 % 输入向量A = 1 2 3 4 5B = 5 4 3 2 1>> C=(A>=4) % 对向量进行关系运算C = 0 0 0 1 1>> D=(A==B) % 对向量进行关系运算D = 0 0 1 0 02.逻辑运算(1)逻辑运算符:& (and,与)、| (or,或)、~ (not,非)(2)逻辑表达式:用逻辑将两个逻辑量连接起来的式子。
【注】①逻辑运算本质上是标量运算,它将任何非零元素视为1(真);②当作用于两个同样大小矩阵时,则分别对两个矩阵的对应元素运算,结果是一个0-1矩阵。
(真值表见P27)例2.对向量进行逻辑运算。
>> a=1:9,b=9-aa = 1 2 3 4 5 6 7 8 9b = 8 7 6 5 4 3 2 1 0>> c=~(a>4) % 非运算c = 1 1 1 1 0 0 0 0 0>> d=(a>=3)&(b<6) % 与运算d = 0 0 0 1 1 1 1 1 13.逻辑函数any(x) 向量x 中有非零元返回1,否则返回0。
(向量函数) all(x) 向量x 中所有元素非零返回1,否则返回0。
(向量函数) isempty(x) 矩阵x 为空矩阵返回1,否则返回0。
find(x) 返回向量x 中非零元下标,若x 是矩阵,则视其为一长列向量。
例3.对向量或矩阵进行逻辑运算,或调用逻辑函数。
>> a=[1 0 -5 0;-3 0 8 2] a = 1 0 -5 0 -3 0 8 2 >> b=all(a),c=any(a) b = 1 0 1 0 c = 1 0 1 1>> x=isempty(a) % 判定矩阵a 是否为空,不能用关系式”a==[]”! x = 0>> y=find(c) %返回向量c 中非零元下标 y = 1 3 4>> z=find(a) % 1个输出参数 z = [1 2 5 6 8]’>> [m,n]=find(a) % 2个输出参数二、M-文件的结构M-文件就是MATLAB 程序文件,它是一个包含MATLAB 语句组(命令序列)的普通ASCII 文本文件,其扩展名为“.m ”。
M-文件有两类:脚本文件和函数文件。
1.脚本文件(亦称命令M-文件)脚本文件的结构比较简单,它没有输入参数和输出参数,只是一些MATLAB 命令行的组合。
脚本文件中定义的变量都是全局变量。
n = 11 3 3 4m =1 2 1 2 2例4.给定矩阵⎪⎪⎭⎫⎝⎛=654321A ,⎪⎪⎭⎫⎝⎛=210104B ,编写命令文件,输入矩阵A 、B ,并计算输出它们的和与差。
解:建立如下M-文件SY00504.mA=[1 2 3;4 5 6]; % 输入矩阵A B=[4 0 1;0 1 2]; % 输入矩阵B C=A+B % 计算输出A 与B 的和 D=A-B % 计算输出A 与B 的差将上述文件以SY00504.m 为名存盘,然后在命令窗口调用此M-文件,则有 >> SY00504C = 5 2 4D = -3 2 2 4 6 8 4 4 42.函数文件(亦称函数M-文件)和命令文件相比,函数文件稍微复杂一些。
通常函数文件包含以下几个部分: (1)函数定义行 位于文件首行,以function 开头,说明函数名、输入/输出参数. (2)帮助信息 紧跟函数定义行后面,以%开头的注释行,给出该函数的在线帮助. (3)函数体 函数的执行语句部分,是函数文件的核心部分。
(4)注释部分 命令行中以符号“%”开始直到该行结束部分的注释语句。
例5.编写函数文件,计算任意两个同维数矩阵的和与差。
(L000402.m ) 解:建立如下函数文件SY00505.m function [C,D]=SY00405(A,B)% 给定矩阵A 和B ,计算输出其矩阵和C 和矩阵差D C=A+B; % 计算矩阵和 D=A-B; % 计算矩阵差将上述文件以SY00405.m 为名存盘,然后在命令窗口调用函数文件,则有 >> A=[1 2 3;4 5 6];B=[4 0 1;0 1 2]; >> [C,D]=SY00505(A,B)C = 5 2 4D = -3 2 2 4 6 8 4 4 4【注】①函数文件的第一行必须是函数说明语句;输入参量用圆括号括起,输出参量多于1个时用方括号括起;多个输入/输出参量时,参量之间用逗号隔开。
②函数文件的变量一般是局部变量,可以用global 命令将某些变量说明为全局变量。
③函数文件的文件名一般应与函数说明语句中定义的函数名相一致。
④函数文件可以递归调用。
三、M-文件的建立、编辑与调用1.M-文件的建立与编辑方法1:在命令窗口输入命令:edit [M-文件名],即可打开相应M-文件编辑器。
方法2:单击菜单“File”->“New”->“M-file”,打开空白M-文件编辑器;方法3:单击菜单“File”->“Open”->输入文件名,打开相应M-文件编辑器;方法4:在当前目录窗口中选择某M-文件,双击则可打开该M-文件编辑器;2.M-文件的调用方法1:在MATLAB命令窗口中直接键入M-文件名,然后回车;方法2:在当前目录窗口选择某M-文件,击右键选择命令RUN,即可运行该M-文件;方法3:在M-文件编辑窗口中,单击工具钮RUN或菜单Debug/RUN,即可运行该M-文件。
【注】①M被调用的M-文件必须位于当前目录或文件搜索路径范围内。
②调用函数文件时,须事先对输入参量赋值,然后按照以下格式调用输出参量=函数名(输入参量)(回车)其中,实际参数和形式参数可以不同;输入参数要用小括号将其括起,输出参数多于一个时,要用中括号“[]”将其括起;参数间用逗号隔开。
四、MATLAB的控制流语句MATLAB与其它计算机高级语言一样,有它自己的控制流语句,用户使用它们可以方便地编写出各种M-文件(应用程序)。
1.选择结构(1)if 语句一般格式:if <关系表达式1><语句体1>elseif <关系表达式2><语句体2>…elseif <关系表达式n><语句体n>else<语句体n+1>end基本功能:若表达式j(j=1,2,…,n)的值为真,则执行语句体j,然后执行end的后续命令;否则,则执行语句体n+1,然后执行end的后续命令。
【注】if 语句结构中,关键字“else ”和“elseif ”所在语句行以及其后的语句体都不是必需的,但是关键字“end ”不能省略。
例6.编写函数文件,计算分段函数解:编写函数文件(fenduan .m)如下:function y= fenduan (x) % 计算分段函数 if x<=0y=0; elseif x<=2*pi y=sin(x); elsey=x-2*pi; end(2)switch 语句一般格式: switch <表达式> case 值1<语句体1> … case 值n<语句体n> otherwise<语句体n+1> end基本功能:首先计算表达式的值,若该值与值j(j=1,2,…,n)相等,则执行语句体j ,然后执行end 的后续命令;否则,则执行语句体n+1,然后执行end 的后续命令。
⎪⎩⎪⎨⎧>-≤<≤=;22;20)sin(;00πππx x x x x y 若若若例7.编写命令文件,从键盘输入某学生成绩(5分制),计算机判断并输出该生成绩的优良等级。
解:编写命令文件(SY00507.m)如下:x=input('请输入您的分数:x=');switch xcase 5disp('优秀!');case 4disp('良好!');case 3 >> SY00507 % 运行程序disp('及格!'); 请输入您的分数:x=4otherwise 良好!disp('不及格!')end2.循环结构(1)for 语句一般格式:for 循环变量=矩阵{语句体}end基本功能:循环循环变量依次取矩阵的每一列,然后执行一次语句体;遍历矩阵的各列后,然后执行end的后续命令。
【注】①for语句有简化格式:for <循环参数>=<初值>:<步长>:<终值><语句体>end其中步长省略时,则默认步长为1.②for循环不能由循环体内给循环变量重新赋值来终止;③for循环可以按需要进行嵌套;例8.编写函数文件,产生m ×n 阶Hilber 矩阵。
解:编写函数文件(hhilb.m)如下:function H=hhilb(m,n) % H 的i,j 处元素H(i,j)=1/(i+j-1) H=zeros(m,n); % 预先分配数组 for i=1:m for j=1:nH(i,j)=1/(i+j-1); endend format rat, H=H; % 取有理数表示。
例_8.编写函数令文件,计算并输出A 的各行向量的元素和(hanghe.m)。
解:function X=hanghe(A)[m,n]=size(A); % 计算A 维数 X=zeros(m,1); % 零初始化 for y=A X=X+y;end(2)while 语句一般格式: while <关系表达式> <语句体> end基本功能:若关系表达式值为真(1),则反复执行语句体,直至关系表达式值为假(0),则终止循环,转而执行end 的后续命令。