001MATLAB应用基础第一课.docx
- 文档编号:9337894
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:28
- 大小:283.89KB
001MATLAB应用基础第一课.docx
《001MATLAB应用基础第一课.docx》由会员分享,可在线阅读,更多相关《001MATLAB应用基础第一课.docx(28页珍藏版)》请在冰豆网上搜索。
001MATLAB应用基础第一课
赵国瑞
天津大学电子信息工程学院
计算机基础教学部
2000.3制作
概述
MATLAB是世界流行的优秀科技应用软件之一。
具有功能强大(数值计算、符号计算、图形生成、文本处理及多种专业工具箱)、界面友好,可二次开发等特点。
自1984年由美国MathWorks公司推向市场以来,先后发布了多个版本,1993年发布4.0版,1996年发布5.0版,1999年发布5.3版。
目前发布的为6.5版。
MATLAB有专业和学生版之分。
二者功能相同,但计算规模和计算难度有差别。
在国内外,已有许多高等院校把MATLAB列为本科生、研究生必须掌握的基本技能。
我校自1999年列为研究生选修课程。
而且有很多教师、研究生把它作为进行科研的重要工具。
国内关于MATLAB的书籍很多,如:
《精通MATLAB5.3》张志涌等编著北京航空航天大学出版社,2000.8
《科学计算语言MATLAB简明教程》杜藏等编著南开大学出版社,1999.6
《精通MATLAB5》张宜华编写清华大学出版社,1999.6
《精通MATLAB--综合辅导与指南》DuaneHanselman、BruceLittlefield编著李人厚等译较西安交通大学出版社,1998.1
等等
本课程主要介绍MATLAB5.3的基本功能和基础知识。
至于其包含的多种工具箱,如仿真工具箱、解非线性方程(组)工具箱、优化工具箱等,应通过本学习后,结合各专业自己进一步学习和使用。
第1章MATLAB基础
1.1源文件(M-文件)
分为两类:
函数文件和非函数文件。
都用扩展名.M
1.1.1函数文件
格式1(无返回值函数)
function函数名(输入表)%称为函数头
函数体
例如:
functionbox(opt_box);
%BOXAxisbox.
%BOXONaddsaboxtothecurrentaxes.
%BOXOFFtakesifoff.
%BOX,byitself,togglestheboxstate.
%
%BOXsetstheBoxpropertyofthecurrentaxes.
%
%SeealsoGRID,AXES.
%Copyright(c)1984-98byTheMathWorks,Inc.
%$Revision:
1.5$$Date:
1997/11/2123:
32:
59$
ax=gca;
if(nargin==0)
if(strcmp(get(ax,'Box'),'off'))
set(ax,'Box','on');
else
set(ax,'Box','off');
end
elseif(strcmp(opt_box,'on'))
set(ax,'Box','on');
elseif(strcmp(opt_box,'off'))
set(ax,'Box','off');
else
error('Unknowncommandoption.');
end
格式2(有返回值函数)
function[输出表]=函数名(输入表)
函数体
其中:
[输出表]是函数的返回值,若输
出表中只有一项,则方括号可省略。
例如:
functionaObjH=getobj(HG)
%GETOBJRetrieveScribeObjectfromHandleGraphicshandle
%Copyright(c)1984-98byTheMathWorks,Inc.
%$Revision:
1.8$$Date:
1998/06/0322:
23:
48
try
ud=getappdata(HG,'ScribeObjectData');
aObjH=ud.HandleStore;
catch
aObjH=[];
end
注意:
·函数名必须与定义它的文件名主名相同
·函数体是对各参数、局部变量和全局变量的操作。
函数体内必须对输出表中的变量赋值
·函数头与函数体之间可以有多个以符号"%"开始的注释行,说明函数的功能和使用方法。
当执行命令help<文件名>时,将显示这些注释,直到遇到第一个非注释行为止。
但是,函数体内包含的注释不能被Help命令显示。
·函数体内最常用的两个特殊变量:
NARGIN—表示输入表中的参数个数
NARGOUT—表示输出表中的参数个数
1.1.2非函数文件
非函数文件是无函数头的M文件,由若干命令和注释构成。
如:
%Filenameisasine.m
x=0:
0.1:
2*pi;y=sin(x);
plot(x,y)
%可包含汉字注释
1.1.3M-文件的操作
1、建立新M-文件
在命令窗中选File/New/M-file命令,打开编辑窗口(4.2c中需事先指定文本编辑器,5.0以后的版本已有内置文本编辑器)
可同时打开多个M文件
2、保存M-文件
在文本编辑器中选File/SaveAs…命令
3、编辑M-文件
在命令窗口/文本编辑器中选File/Open…命令
4运行M-文件
在文本编辑器中选Tools/Run命令
或在命令窗口使用命令行调用,格式为:
文件名
1.2MATLAB命令窗口
1.2.1启动MATLAB
双击快捷方式图标或从“开始”菜单序列中选择。
1.2.2MATLAB命令窗口(V5.3)
主要菜单命令和工具按钮:
1)File/SetPath…或工具按钮
用于设置搜索路径
搜索文件或变量名的顺序
工作空间中
内部函数所在目录中
当前目录中
设定的搜索路径中
(1)在PathBrowser窗口中选Path/AddtoPath命令可增加设定的搜索路径。
(2)在PathBrowser窗口中选Path/RemovefromPath命令可删除设定的搜索路径。
2)File/Preference…设置工作参数
设置通用项目
设置命令窗口字体
设置复制选项
1.2.3命令行
一行可写入一个或多个命令,命令之间用逗号或分号隔开,如果命令尾带分号将不显示该命令的执行结果;
还可有续行(4.2c行末为…,5.3为自由格式);
最后用回车提交命令。
例如:
x=[1,2,3,4,5,6;
2,3,4,5,6,7;
9,7,5,3,1,0];
y=x.*x;
plot(x,y)
3)命令窗口常用键:
↑键—显示前个命令
↓键—显示后个命令
Esc键-取消输入
Ctrl+x—剪切
Ctrl+c—复制
Ctrl+v—粘贴
1.2.4MATLAB的帮助系统
·帮助命令:
·help文件名或函数名
·帮助菜单:
·演示命令:
demo
1.2.5MATLAB的NoteBook
MATLAB借用Word的文本编辑功能,并允许在文档内嵌入MATLAB命令,可以很自然地将其运行结果(数值或/和图形)嵌入文档之中。
注意:
V4.2C-V5.2只能在Word95中使用,V5.3可在Word95/97中使用,V6.x可在Word2000中使用。
要在Word95/97中使用MATLABV5.3的NoteBook功能,应在MATLAB安装后,在MATLAB中进行设置,即拍入命令:
NOTEBOOK–SETUP
将显示如下信息:
WelcometotheutilityforsettinguptheMATLABNotebook
forinterfacingMATLABtoMicrosoftWord
ChooseyourversionofMicrosoftWord:
[1]MicrosoftWordforWindows95(Version7.0)
[2]MicrosoftWord97
[3]Exit,makingnochanges
下面以选择WORD97为例说明。
MicrosoftWordVersion:
2
Youwillbepresentedwithadialogbox.PleaseuseittoselectyourcopyoftheMicrosoftWord97executable(winword.exe).
Pressanykeytocontinue...
Youwillbepresentedwithadialogbox.PleaseuseittoselectaMicrosoftWordtemplate(.dot)fileinoneofyourMicrosoftWordtemplatedirectories.Wesuggestthatyouspecifyyournormal.dotfile.
Pressanykeytocontinue...
Notebooksetupiscomplated.
设置完成后,运行Word97,在"新建"对话框中将出现m-book.dot模板。
选中它,单击"确定"按钮,或者选择"文件"菜单中的NewM-book命令,即可编辑M-book文件,同时,菜单栏中将出现Notebook菜单。
其中:
DefineInputCell或DefineCalcZone命令用于定义MATLAB命令区;
EvaluateCell或EvaluateCalcZone命令用于计算插入点所在的MATLAB命令区。
注意:
如果在定义MATLAB命令区后不能正常显示汉字,可指定为宋体后再继续进行其它编辑操作。
1.3数据表示
1.3.1数据类型
有整型、实型、复型、字符串四种类型
1、常数
1)整型常数:
-10010
2)实型常数:
0.3.33.-3914e-2
(表示范围约10±308)
3)复型常数:
1+2i3.5-6.18i
1+3.2i
4)字符串常数:
'MATLAB'
'Ican''tdo.'
(两个连写的单撇号表示一个单撇号)
注意:
没有逻辑型,但与C语言那样,非0为真,0为假。
2、变量
变量用标识符表示(字母打头、字母、数字、下划线组成,长度≤19)。
可以合法出现而定义。
区分大小写字母,以当前值定义其类型。
3、函数名
函数名用标识符表示。
4、特殊常数
ANSwer、EPSilon(10-16)、PI、NaN(即0/0)、INFinite(∞)、REALMAX、REALMIN、NARGIN、NARGOUT等。
1.3.2数组
分为行向量、列向量、矩阵。
普通变量可看成1×1数组。
1、创建数组的基本方法
1)直接列表定义数组
变量=[元素值1元素值2…元素值n]
变量=[元素值1,元素值2,…,元素值n]
变量=[行1各元素;行2各元素;…;行n各元素]
例如:
x=[1234567890]
y=[1,2,3,4,5,6,7,8,9,0]
z=[1,2,3,4,5;2,3,4,5,6,7]
2)域表定义数组
变量=初值:
增量:
终值|初值:
终值
变量=(初值:
增量:
终值)*常数
例如:
x=0:
0.02:
10
y=1:
80
z=(1:
0.1:
7)*10e-5
3)利用函数定义数组
变量=linspace(初值,终值,元素个数)
如:
x=linspace(0,pi,11)的结果为:
x=
Columns1through7
00.31420.62830.94251.25661.57081.8850
Columns8through11
2.19912.51332.82743.1416
变量=logspace(初值指数,终值指数,元素个数)
其中:
初值元素为10初值指数
终值元素为10终值指数
第i个元素为
如x1=logspace(0,2,10)的结果为:
x1=
Columns1through7
1.00001.66812.78264.64167.742612.915521.5443
Columns8through10
35.938159.9484100.0000
2、数组的访问(一维)
数组名表示全体元素
数组名(k)表示第k元素
数组名(k1:
k2)表示第k1到k2元素
数组名(k1:
k2:
k3)表示第k1、k1+k2、
k1+2k2,…,到k3元素
数组名([k1,k2,…,kn])
表示第k1,k2,…,kn元素
其中:
kp也可为初值:
终值或初值:
增量:
终值的形式。
如:
a=1:
2:
151
则:
3
a
(2)5
a(3:
5)7
a9
a(5:
-1:
2)11
a([2,6,8])13
15
3、数组的基本运算
设有数组a1×n,b1×n,x1×m,gm×n,hn×m,fm×n变量或常量c1,c2,…,ck
1)一维数组拼接
u=[ax]结果为[a1…anx1…xm]
或u=[ac1c2…ck]
结果为[a1…anc1c2…ck]
2)转置
a.'点转置
a'共轭转置
3)纯量与数组的算术运算
aωc1
或c1ωa
其中ω可为+、-、*
结果为[a1ωc1a2ωc1…anωc1]
或[c1ωa1c1ωa2…c1ωan]
4)数组加(减)
使两数组的对应各元素相加(减)
a+b结果为[a1+b1a2+b2…an+bn]
a–b结果为[a1–b1a2–b2…an–bn]
(a与b的维数必须相同)
5)数组点乘
使两数组的对应元素相乘
a.*b结果为
[a1*b1a2*b2…an*bn]
(a与b的维数必须相同)
6)数组点正除(右除)
使两数组的对应元素正除
a./b结果为:
(a、b维数必须相同)
7)数组点反除(左除)
a.\b
结果为:
显然:
a./b=b.\a
(a、b维数必须相同)
8)数组的幂运算
a.^c1结果为[a1^c1a2^c1…an^c1]
c1.^a结果为[c1^a1c1^a2…c1^an]
a.^b结果为[a1^b1a2^b2…an^bn]
以上8种基本运算中,除拼接外,其它均适于二维数组(两个二维数组必须具有相同的维数)。
显然,两个二维数组进行拼接列时,必须有相同的行数,拼接行时必须有相同的列数。
例如:
g'g.'
cωg或gωcω为+、–、*
g+hg–h
g.*h
g./hg.\h
g.^hg.^c1c.^g
而且可以进行混合运算。
如:
2*g–h
(g.^2).^(h–1)
4、1数组和0数组
1)1数组
ones(n)建立n×n全为1的数组
ones(r,c)建立r行c列的1数组
2)0数组
zeros(n)建立n×n全为0的数组
zeros(r,c)建立r行c列的0数组
5、数组操作
1)二维数组的访问(除一维数组访问形式外)
g(r,c)访问gr,c元素
g(r,:
)访问g中第r行各元素
g(:
r)访问g中第r列各元素
g(i)访问g按列排列后的第i个元素
2)按列拉长
即把矩阵按列拉成向量(列向量)
g(:
)
3)插入新元素而扩展
如:
A=[1,2,3;4,5,6;7,8,9];
插入:
A(2,6)=10
插入后,A变成3行6列矩阵,未定义的新元素值内定为0。
即:
4)重排
如对A=[1,2,3;4,5,6;7,8,9];
B=A(3:
–1:
1,:
)
或B=A(3:
–1:
1,1:
3)
将把A的各列元素倒排生成B
B=
789
456
123
5)提取
如:
A(:
[13])%提取A的第1、3列
A(1:
2,2:
3)%提取A中前两行的后两列
设C=[13]
则:
A(C,C)%提取A第1、3行中第1、3列各元素,效果与A([13],[13])相同.
6)置空(删去某行或某列)
如:
A=[1,2,3;4,5,6;7,8,9];
B=A;
B(:
2)=[];%将B的第2列删掉
B=A;
B(1,:
)=[];%删去B的第1行
7)置零
如:
A(2,:
)=[0,0,0]
将把A的第2行置零。
注意:
不能写成A(2,:
)=0
8)拼接
如:
A=[1,2,3;4,5,6;7,8,9];
B=[1,4,7];
B(3:
4,:
)=A(2:
3,:
);
将把A的第2、3行作为B的第3、4行
C=[AB(1:
2,:
)']
将把B的前2行转置后接在A的右侧生成C。
D(1:
6)=A(:
2:
3)
提取A的第2、3列生成一个行向量D。
9)数组的规模
s=size(A)
生成行向量s,值为A的行数,列数
[r,c]=size(A)
返回A的行数r,列数c
r=size(A,1)返回A的行数r
c=size(A,2)返回A的列数c
10)用逻辑数组操作一个数组
对数组的逻辑运算产生逻辑数组,且结果中用1表示真,0表示假
如:
x=–3:
3
x=–3–2–10123
t=abs(x)>1%t为逻辑数组
t=1100011
y=x(t)%提取t中为真对应的x元素
y=–3–223
对数组有以下的逻辑运算:
●比较运算符:
<<===>>=~=
两数组对应元素相比较,或一个数组的各元素与一个纯量相比较,结果为逻辑数组
显然相比较的数组必须具有相同大小
●逻辑运算符
&(与)|(或)
~(非)XOR(异或)
两相同大小的数组进行&(与)、|(或)、XOR(异或)运算是对应元素的运算(也允许一个数组与一纯量进行这些运算)
对任一数组都可以进行~(非)运算
如:
A&B
A|B
XOR(A,B)
~A
A&2
11)矩阵乘
设gm×n和hn×m,则
g*h结果为m×m矩阵
h*g结果为n×n矩阵
注意:
矩阵乘(*)与数组乘(.*)的区别
12)矩阵除
矩阵正除(右除):
A/B
矩阵反除(左除):
A\B
由于在MATLAB中是根据关系式:
B\A=(A'/B')’
定义和设计右除的,故以下仅讨论左除。
A\B相当于A–1×B
在MATLAB中,若A为方阵(n×n),B为n个元素的列向量,则x=A\B表示用高斯消元法解线性代数方程组Ax=B。
若A是奇异(病态)或接近奇异的,则给出警告信息。
若A为m×n矩阵(m≠n),B为m个元素的列向量,若m>n,则x=A\B是超定方程组的最小二乘解。
若m 13)矩阵乘方 ☆矩阵的标量乘方A^p 当p为整数时,A应为方阵: p>0则A^p=A*A*…*A p次 p=0则A^p=A^0 等于与A同维的单位矩阵 p<0则A^p=inv(A^abs(p)) 即求A自乘|p|次后的逆矩阵 当p为非整数时,A应为方阵,若存在特征值分解AV=VD(D为对角阵),那么定义: Ap=VDpV–1 如: A=[1,2,3;4,5,6;7,8,9]; Ap=A^0.3的结果为: Ap= 0.6962+0.6032i0.4358+0.1636i0.1755-0.2759i 0.6325+0.0666i0.7309+0.0181i0.8292-0.0305i 0.5688-0.4700i1.0259-0.1275i1.4830+0.2150i ☆标量的矩阵乘方p^A 定义为: 若存在特征值分解AV=VD,则 如: A=[1,2,3;4,5,6;7,8,9]; 0.3^A的结果为: ans= 2.93420.4175-1.0993 -0.02780.7495-0.4731 -1.9898-0.91841.1531 注意: 矩阵的矩阵乘方,即A^B无意义 1.3.3字符串 字符串是用单引号括起来的字符序列。 在MATLAB中,可以把一个字符串看成一个由各字符组成的行向量。 这样,前述对数组的某些运算就适用于字符串了。 如: t='abcdefghijklmnopqrstuvwxyz' s='1234567890' 提取: u=t(5: 11)%t中第5到11字符子串 例排: u=t(20: –1: 6) 转置: u=t'%u变为列向量 拼接: u=[ts] 当每行字符个数均相同时还可构成字符矩阵,如: u=['abcde' '12345' 'uvwxy'] u可看成3行5列的矩阵(数组) 对字符串有多种函数可以调用,如: abs(s)%将串s中各字符变为ASCII码值 delblank(s)%删去s的尾部空格 dec2hex(k)%将十进制数k变为十六进制字符串 findstr(s1,s2)%查找s2在s1中的位置(全体) hex2dec(s)%将十六进制字符串变为十进制数 Strcmp(s1,s2)%比较串s1和s2,二者相等返回1,否则为0 Strrep(s,s1,s2)%用s2替换s中全体s1等等. 1.4数据的输出格式 在MATLAB中,数据的存储和运算都以双精度进行,但输出结果可指定格式。 指定输出格式的方法有两种: 1.4.1菜单命令法 V5.3中,选择File中的Preferences命令,在General标签中设置。 (V4.2C中,从Options菜单中选择NumericFormat的子菜单项) 其中: ☆SHORT按5位小数(含小数点、下同)输出 LONG按15位小数(含小数点、下同)输出 SHORTe按5位小数、科学记数方式输出 LONGe按15位小数、科学记数方式输出 HEX按16进制输出 +表示大矩阵时使用,+、–、空格分别表示正数、负数和零(不显示数) RAT近似有理数(分数)表示 BANK(金融)元、角、分表示 COMPACT数据之间无空行 ☆LOOSE数据之间有空行 1.4.2使用Format命令法 格式: Format格式串 其中: 格式串同前述各项 如: formatlonge 5/3 ans= 1.66666666666667e+000 f
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 001 MATLAB 应用 基础 第一