MATLAB教案.docx
《MATLAB教案.docx》由会员分享,可在线阅读,更多相关《MATLAB教案.docx(35页珍藏版)》请在冰豆网上搜索。
MATLAB教案
宿州学院
机械与电子工程学院课程教案
课程编码:
SJ085408
总学时/周学时:
16/16
开课时间:
2013年5月6日第10周至第15周
授课年级、专业、班级:
2011级电子信息工程、自动化、电气工程及其自动化
使用教材:
《MATLAB7讲义》
教研室:
自动化
授课教师:
温艳、郝保明、胡波
(2)课程进度计划表
章次
内容
讲授
上机
一
MATLAB简介
1
1
二
MATLAB的基本使用
1
1
三
向量与数组及其基本运算
1
1
四
矩阵的基本运算
1
1
五
MATLAB程序设计
1
1
六
字符串
1
1
七
多项式
1
1
八
图形处理
1
1
九
十
总学时
8
8
(3)教案正文
专业软件实习
(2)(MATLAB)
第一章MATLAB简介
一、MATLAB的初步知识
MATLAB最初是由CleveMoler用Fortran语言设计的,有关矩阵的算法来自Linpack和Eispack课题的研究成果;现在的MATLAB程序是MathWorks公司用C语言开发的。
MATLAB作为美国MathWorks公司开发的用于概念设计,算法开发,建模仿真,实时实现的理想的集成环境。
是目前最好的科学计算类软件
二、MATLAB的主要应用领域
(一)数值分析。
(二)数值和符号计算。
(三)工程与科学绘图。
(四)控制系统的设计与方针。
(五)数字图像处理。
(六)数字信号处理。
(七)通讯系统设计与仿真。
(八)财务与金融工程。
三、MATLAB的优点
容易使用,可以由多种操作系统支持,丰富的内部函数,强大的图形和符号功能,可以自动选择算法,与其他软件和语言有良好的对接性。
四、MATLAB的缺点
(一)运行效率较低
由于MATLAB是一种合成语言,因此,与一般的高级语言相比,用MATLAB编写的程序运行起来时间往往要长一些。
(二)价格比较贵
一般的用户可能支付不起它的高昂费用。
但是,购买MATLAB的昂贵费用在很大程度上可以由使用它所编写的程序的价值抵消。
五、MATLAB7的新功能
提供了MATLAB、SIMULINK的升级以及其他最新的75个模块的升级,该版本不仅提高了产品质量,同时也提供了最新的用于数据分析、大规模建模、固定点开发和编码等新特征。
六、MATLAB7的安装过程
用户在购买到正版MATLAB7后,可以按照相关的说明进行安装,安装过程相对比较简单。
这里不在赘述。
安装MATLAB7必须具有由Mathworks公司提供的合法个人使用许可,如果没有使用许可,用户将无法安装MATLAB。
七、MATLAB7用户界面概述
(一)MATLAB7的主菜单
(二)MATLAB7的工具栏
(三)窗口
包括:
1.命令窗口(CommandHistory):
用于输入命令,">>"为命令输入提示符。
2.命令历史窗口(CommandHistory):
记录输入的命令。
3.工作间管理窗口(Workspace):
显示当前计算机内存中Matlab变量的名称。
4.当前路径窗口(CurrentDirectory):
显示当前用户所在的路径。
八、路径搜索
MATLAB7有一个专门用于寻找“.m”文件的路径搜索器。
“.m”文件是以目录和文件夹的方式分布于文件系统中的,一部分“.m”文件的目录是MATLAB7的子目录,由于MATLAB7的一切操作都是在它的搜索路径(包括当前路径中进行的,所以如果调用的函数在搜索路径之外,MATLAB7就会认为此函数并不存在。
(一)MATLAB7的当前目录
在“命令”窗口中输入cd命令,并按Enter键确认,即显示当前MATLAB7工作所在目录。
>>cd
d:
\MATLAB71\work
(二)查看安装路径
>>installpath=matlabroot
installpath=
D:
\MATLAB6p5
(三)MATLAB7的路径搜索设置
选择MATLAB的主窗口中File|SetPath命令,进入到设置路径搜索的对话框,用户可以设置新的路径
九、Matlab帮助系统
(一)help函数
(二)lookfor函数
练习:
1.简述MATLABA7的各个窗口的作用。
2.查看MATLAB7的当前目录和安装路径
3.使用help函数查找det函数的用法
4.使用lookfor函数查找含用关键字norm的相关内容。
第二章 MATLAB的基本使用
一、简单的数学运算
(一)最简单的计算器使用法
1.直接输入法
>>3*30+3*35+4*30+4*32
ans=
443
2.存储变量法
>>grade1=3*30
grade1=
90
>>grade2=3*35
grade2=
105
>>total=grade1+grade2total=
195
(二)标点符号的使用
标点符号
定义
标点符号
定义
;
区分行,取消运行显示等
.
小数点以及域访问等
区分列,函数参数分隔符等
…
连接语句
:
在数组中应用较多
‘
字符串的标识符号
()
指定运算优先级等
=
赋值符号
[]
矩阵定义的标志等
!
调用操作系统运算
{}
用于构成单元数组等
%
注释语句的标识
二、数值运算符号
符号
功能
实例
+
加法
1+2
-
减法
1-2
*
乘法
1*2
/、\
除法
1/2或是2\1
^
乘方
2^1
例:
光明小学一年级有4个班,每班30人,二年级有3个班,每班35人,求该小学一二年级一共有多少人。
》4*30+3*35
三、常用的操作命令
clc:
清除工作窗
clear:
清除内存变量
quit:
退出
save:
保存内存变量到指定文件。
clf:
清除图形窗口
cd:
显示MATLAB工作所在目录。
Installpath:
显示安装路径。
四、常用函数
三角函数:
sincostancotasinacosatanacot
exp:
指数函数
log:
自然对数
imag:
复矩阵虚部
real:
复矩阵实部
round:
四舍五入
mod:
有符号求余
rem:
无符号求余
sign:
符号函数
sqrt:
平方根
abs:
模
练习:
1.练习使用常用指令。
2.设
,计算下列各题
(1)
(2
(3)
3.在指令窗中输入下面一段程序,功能是:
画出衰减振荡曲线y=(e-t/3)sin3t及其他的包络线y0=(e-t/3)。
T的取值范围是[0,4
]。
t=0:
pi/50:
4*pi;
y0=exp(-t/3);
y=exp(-t/3).*sin(3*t);
plot(t,y,'-r',t,y0,':
b',t,-y0,':
b')观察输出结果
第三章向量与数组及其基本运算
一、 向量的生成
(一)向量的生成:
在命令窗口中直接输入向量.如:
>>a=[1,2,3,4]
a=
1234
(二)等差元素向量的生成:
如生成一个向量b=[1,3,5,7,9].
>>b=1:
2:
9
b=
13579
其中,1为起始值,2为公差,9为终止值.
二、 向量的基本运算
(一)加(减),向量中每个元素的加(减)例如:
>>a=[1,2];
>>b=[3,5];
>>a+b
ans=
47
(二)点积(dot)、叉积(cross)和混合积
例1:
求
>>dot(a,b)
ans=
13
叉积,要求变量维数至少三维
例2:
,求
>>cross(a,b)
ans=
-3 6 -3
例3:
,求
>>c=[5,1,2];
>>dot(a,cross(b,c))
ans=
-15
三、数组及其基本运算
(一)数组的生成:
可通过自定义或利用matlab函数生成.
例如:
建立数组A=[1,2,3,4,5],可直接在matlab命令行中定义
>>A=[1,2,3,4,5]
对于一些特殊的矩阵(如随机数据构成的矩阵)可利用相应的函数生成。
例13 随机生成一个1*10数组.
>>A=rand(1,10)
(二)数组的运算
数组的运算主要包括数组的排序、数值运算、关系运算和逻辑运算等
1.数组的排序:
函数:
sort;默认情况下对按升序排序。
用法:
sort(X):
对数组X中的元素按升序排列.dsort():
降序
例4
,对X进行排列
>>x=[1,3,7,5,2]
>>sort(x)
ans=
12357
2.数值运算
数组运算符有矩阵运算符前面加一点"."来表示,数值运算包括:
加(.+),减(.-) 乘(.*) 除(.\),乘方(.^)。
数组的加法(减法)与矩阵相同,因此运算符(+,-)既可以被矩阵接受也可以被数组接受。
例15
,求数组A于B的乘积.
>>A=[1,2,3];
>>B=[2,3,4];
>>A.*B
ans=
2612
3.关系运算
关系运算包括:
小于(<)、小于等于(<=)、大于(>)、大于等于(>=)、等于(==)、不等于(~=)。
比较两个元素大小时,结果为1表示关系式为真;结果为0表示关系式为假。
如,A=[1,2],B=[1,3]
>>A==B
>>0
4.逻辑运算
逻辑运算有三种:
与(&)、或(|)、非(~)。
与(&)、或(|)可以比较两个数组的,非(~)为一元操作符。
逻辑运算针对数组或矩阵中的每一个元素。
如:
A=[1,0]
~A则为[0,1]
练习:
1.已知
,c=[9,-1,4]
(1)求a和b的点积
(2)求b和c的点叉积(3)求a、b和c的混合积
2.首先生成一个1
10的随机数组A然后将第5个和第8个元素取出,并对它们进行四则运算。
3.设
,求其特征值和特征向量
4.A为5阶魔术矩阵,分别对A进行如下操作:
(1)求A的逆;
(2)求A的秩;(3)求A的迹
5.设数组
,
,求A与B的乘积.
第四章矩阵的基本运算
一、矩阵的生成
(一)直接法:
例1:
如生成一个三阶矩阵:
>>A=[1,2,3;4,5,6;7,8,9] %:
','表示一行中元素的分隔,';'表示分行.
A=
123
456
789
(二)向量法:
矩阵可以看成由多个向量的组合。
如果向量内各数据之间成等差数列,则可利用冒号表达式建立一个向量,如例3。
冒号表达式可以产生一个行向量,一般格式是:
e1:
e2:
e3
其中e1为初始值,e2为步长,e3为终止值。
如生成向量[1,2,3]则可表示为1:
1:
3
矩阵A可表示为:
>>A=[1:
1:
3;4:
1:
6;7:
1:
9]
二、矩阵的运算
1.矩阵与矩阵的加(减)法:
指矩阵各元素之间的加(减)法.矩阵必须具有相同的阶.加法用"+",减法用"-",数乘用"*".
例2:
,求
>>A=[1,2;3,4];
>>B=[2,4;1,3];
>>A+B
ans=
36
47
>>3*A
ans=
36
912
2.矩阵与矩阵的乘法:
运算符号"*",如果A是一个
阶矩阵,D是一个
阶矩阵,则
为
阶矩阵.
例3:
,求
>>A=[1,2;3,4];
>>D=[1,2,3;4,5,6];
>>A*D
ans=
91215
192633
3.矩阵与矩阵的除法:
一般情况下,A\B:
表示A*X=B的解;而B/A:
表示x*A=B的解.
例4:
求
及
的解.
>>A=[1,2;3,4];
>>B=[1,2,3;4,5,6];
>>D=[9,12,15;19,26,33];
>>X=A\D
X=
1.00002.00003.0000
4,00005.00006.0000
>>Y=D/B
Y=
1.00002.0000
3.00004.0000
4.矩阵的特征参数运算
^
矩阵的乘方
Sqrtm
矩阵的开方
Expm
矩阵的指数运算
Logm
矩阵的对数运算
Det
矩阵的行列式
Inv
矩阵的逆
Rank
矩阵的秩
Trace
矩阵的迹
Eig或eigs
矩阵的特征值和特征向量
Norm
计算矩阵的范数
例5:
,求
>>A=[1,2;3,4];
>>inv(A)
ans=
-2.00001.0000
1.5000-0.5000
例6:
求矩阵A的特征值和特征向量
用法一:
E=eig(A)生成有矩阵A的特征值所组成的一个列向量;
用法二:
[V,D]=eig(A)生成两个矩阵,V:
表示以矩阵A的特征向量作为列向量组成的矩阵,D:
表示由矩阵A的特征值作为主对角线元素构成的对角矩阵.
>>E=eig(A)
E=
-0.3723
5.3723
>>[V,D]=eig(A)
V=
-0.8246-0.4160
0.5658-0.9094
D=
-0.37230
05.3723
例7 求矩阵A的2-范数;计算A的无穷范数.
>>norm(A,2)
ans=
5.4650
>>norm(A,inf)
ans=
7
5.特殊矩阵的生成
[]
生成空矩阵
Zeros
生成0矩阵
Eye
生成单位矩阵
Ones
生成全1矩阵
Diag
生成对角矩阵
Rand
生成服从0-1分布的随机矩阵
Randn
生成服从正态分布的随机矩阵
Vander
生成范德蒙德矩阵
例8 生成4行5列的零矩阵
>>zeros(3,5)
ans=
00000
00000
00000
例9 生成一个取值在5~10之间的3行3列随机矩阵.
分析:
rand(3),可生成0~1之间的矩阵,而5~10,之间的差为5,因此5*rand(3)可0~5之间的随机矩阵,需要生成5~10之间的随机矩阵,需要将矩阵5*rand(3)向右平移5个单位,即 5+5*rand(3)
>>5+5*rand(3)
习题:
1.已知
,c=[9,-1,4]
(1)求a和b的点积
(2)求b和c的点叉积(3)求a、b和c的混合积
2.首先生成一个1
10的随机数组A然后将第5个和第8个元素取出,并对它们进行四则运算。
3.设
,求其特征值和特征向量
4.A为5阶魔术矩阵,分别对A进行如下操作:
(1)求A的逆;
(2)求A的秩;(3)求A的迹
5.设数组
,
,求A与B的乘积.
第五章MATLAB程序设计
一、M文件的组成
二、程序控制
(一)顺序结构
例1:
a=1;
b=2;
c=3;
s1=a+b
s2=s1+c
s3=s2/s1
(二)选择语句:
包含三种形式
第1种形式为只有一种选择:
结构如下
if表达式
执行语句
end
第2种形式为只有两种选择:
结构如下
if表达式
执行语句1
else
执行语句2
end
第2种形式为只有3种或3种以上选择:
结构如下
if表达式1
表达式1为真时的执行语句1
elseif表达式2
表达式2为真时的执行语句2
elseif表达式3
表达式3为真时的执行语句3
……
……
else
所有的表达式都为假时执行语句
end
例1:
%该程序用于演示有2种选择时if-else-end语句的使用
functioniftwo(x)
ifx>0
fprintf(‘%fisapositivenumber\n’,x)
else
fprintf(‘%fisnotapositivenumber\n’,x)
end
(三)分支语句
switch开关语句
Case条件语句
执行语句,……,执行语句
Case{条件语句1,条件语句2,条件语句3,……}
执行语句,……,执行语句
……
Otherwise,
执行语句,……,执行语句
end
functionlower1(method)
switchmethod
case{‘linear’,’bilinear’}
disp(‘methodislinear’)
case’cubic’
disp(‘methodiscubic’)
case‘nearest’
disp(‘methodisnearest’)
otherwise
disp(‘Unknownmethod.’)
end
将上边的程序以lower1.m为文件名保存,在命令窗口中运行该文件。
>>a=’linear’;
>>lower1(a)
Methodislinear
(四)for循环语句
fori=表达式,
执行语句,……,执行语句
end
例2:
求1-10的平方
>>fori=1:
1:
10
x(i)=i^2;
end
>>x
x=
149162536496481100
for循环语句可嵌套使用,如求
解:
打开M文件编辑窗口,输入程序如下,并将函数命名为forsum。
在命令窗口中输入forsum,即可得到如下结果。
(五)while循环语句
while表达式
执行语句
end
(六)人机交互命令
break:
中断命令:
一般用在循环控制中。
return:
返回调用函数或键盘。
continue:
与break不同,系统只是不再执行相关的执行语句,而不会跳出当前循环。
pause:
暂停等待。
input:
提示用户从键盘输入数据、字符串或表达式。
三、函数
(一)主函数:
M文件中的第1个函数为主函数。
如果同一个M文件中有多个函数,则通常对第1个函数进行定义,定义方式如下:
functionf()
其中,function:
为函数定义。
f为函数名
(二)子函数:
子函数的定义与主函数相同。
例3,编制一个函数,要求任意输入两个数值后,用两个子函数分别求出它们的和与它们的绝对值的和,再将这两个和相乘。
练习:
1.简述使用M文件与在MATLAB“命令”窗口直接输入命令有何异同。
2.for循环语句可嵌套使用,如求
3.用for…end循环,编程求出1+3+5+…101的值。
4.用while循环计算习题2
5.建立阶跃函数。
6.求和:
s=1+2+…+n<1000
7.求1-10的平方
8.验证例10
第六章字符串
一个字符串是由单引号括起来的简单文本,在字符串里的每一个字符是数组中的一个元素,字符串的存储给每一个字符分配8个字节,与其他的数据类型保持一致。
内容包括:
字符串的设置、字符串的操作两部分。
一、字符串设定:
只需用单引号(')将设定的字符串引注即可.
例1 设定字符串str为'thisisastring’
>>str=’thisisastring’
另外,字符串内的单引号由两个连续的单引号来表示,
例2 如要表示:
It’sastring
>>str=’It’’sastring’
str=
It’sastring
二、字符串操作
包括字符串元素的读取、连接、比较、查找、替换、转换等。
(一)字符串元素的读取:
因为字符串是数组,可用数组操作工具进行读取.
例3读取字符串str的第6个元素
>>str(6)
ans=
a
例4读取字符串str的第5-13字符
>>str(5:
13)
ans=
astring
(二)字符串连接等操作
例5 连接字符串str1=’Thisis’和字符串 str2=’asting’
str1=’Thisis’
str2=’astring’
strcat(str1,str2)
ans=
Thisisastring
由于Matlab 是采用C语言开发的,因此它的字符串操作与C语言基本相同.
函数名
函数用途
函数名
函数用途
Strcat
连接字符串
strvcat
垂直连接字符串
strcmp
比较字符串大小
strncmp
比较字符串的前n个字符
findstr
在其他字符串中查找该字符串
strjust
证明字符数组
strmatch
查找可能匹配的字符串
strrep
用其他字符串代替该串
deblank
删除字符串内的空格
blacks
生成空的字符串
iscellstr
字符串的单元检验
strings
Strings函数的帮助
(三)字符串比较
字符串的比较主要由两个函数strcmp,实现。
其中,strcmp:
比较两个字符串是否相等,当相等时,返回值为1,否则返回0。
Strncmp:
比较两个字符串前n个字符是否相等,当相等时,返回值为1,否则返回0。
例6>>words1=’situate’;
>>words2=’situp’;
>>N=strcmp(word1,word2)
N=
0
(四)字符串的查找、替换
Matlab提供finstr、strfind等函数来实现查找和替换功能。
findstr:
会根据所给字符串中的字符来查找,返回字符的位置。
如
例7在s=’Howmuchwoodwouldawoodchuckchuck?
’,中查找字符’a’;
>>s=’Howmuchwoodwouldawoodchuckchuck?
’
>>a1=findstr(s,’a’)
a1=
21
strfind(text,pattern):
只能在text中查找pattern,并返回第一个相同字符的位置。
例8在‘a’中查找字符串s=’Howmuchwoodwouldawoodchuckchuck?
’
>>b1=strfind(’a’,s)
>>b1=
[]
返回结果为空,表示在’a’中不存在与s相同的字符串。
(五)转换
在matlab中,可利用num2str、int2str、str2num、str2double等函数实现字符串和数值之间的转换。
例8将数值2转换成字符‘2’
>>a=num2str
(2)
a=
2
输出结果中,a为字符型变量。
练习:
1.将字符串s1=’thisisastring’,中的字符’a’替换成‘A’。
2.将数值矩阵
转换成字符矩阵。
第七章多项式
包含多项式的表示,多项式的运算两部分。
一、多项式的表示方法
在Matlab中多项式可通过向量来表示,对于多项式
可以利用