MATLAB程序设计
- 格式:doc
- 大小:181.01 KB
- 文档页数:12
实验一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程序课程设计一、教学目标本课程的教学目标是使学生掌握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程序设计及绘图一、实验目的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的程序设计一、实验目的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 语句。
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 的后续命令。