MATLAB入门教程-updated20131008_第1页
MATLAB入门教程-updated20131008_第2页
MATLAB入门教程-updated20131008_第3页
MATLAB入门教程-updated20131008_第4页
MATLAB入门教程-updated20131008_第5页
已阅读5页,还剩120页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MATLAB编程入门编程入门主要内容主要内容使用简介使用简介命令行编辑入门命令行编辑入门常用函数常用函数画图介绍画图介绍MATLAB数值运算数值运算编程基础编程基础符合运算符合运算MATLAB 使用简介使用简介是一种解释式语言是一种解释式语言. . 简单易学、代码短小高效简单易学、代码短小高效、计算功能强大、图形绘制和处理容易、可扩、计算功能强大、图形绘制和处理容易、可扩展性强展性强. .矩阵的数值运算、数值分析、模拟矩阵的数值运算、数值分析、模拟数据可视化、数据可视化、 2D/3D的绘图的绘图 可以与可以与FORTRAN、C/C+做数据链接做数据链接几百个核心内部函数几百个核心内部函数大量可

2、选用的工具箱大量可选用的工具箱MATLAB是是Matrix Laboratory的缩写的缩写鼠标双击鼠标双击Windows桌面上图标桌面上图标在在Windows“开始开始”菜单的菜单的 “程序程序”选项中选择选项中选择 “ MATLAB”退出退出MATLAB命令窗口键入命令窗口键入“quit”或或 “Ctrl+Q”鼠标选择菜单鼠标选择菜单 file Exit MATLABMATLAB 使用简介使用简介启动启动 MATLABMATLAB桌面桌面命令窗口命令窗口工作空间浏览工作空间浏览命令历史窗命令历史窗口口命令窗口、编辑窗口、图形窗口命令窗口、编辑窗口、图形窗口MATLAB 使用简介使用简介 n

3、=0:1:63;S=sum(2.n)S = 1.8447e+019例例2. 计算计算sin x 在在 处的值处的值3,4,6,8 clear x=pi./8,6,4,3,y=sin(x)y = 0.3827 0.5000 0.7071 0.8660MATLAB 使用简介使用简介-例例1.计算级数计算级数:S=1+2+22+23+263= 6302nn例例3. 衰减振荡曲线函数衰减振荡曲线函数: y=e -0.5x sin 5x图形图形.x=0:0.1:4*pi; y= exp(-0.5*x) ;y1=y .*sin(5*x);plot(x,y1,x,y,-b,x,-y,-r)MATLAB 使用

4、简介使用简介命令行编辑入门命令行编辑入门- 命令行基础命令行基础 简单运算简单运算例例1.求求12+2(7-4)32(12+2*(7-4)/32ans = 2 MATLAB表达式输入表达式输入常见两种形式常见两种形式:表达式;变量表达式表达式;变量表达式例例2.建立变量建立变量y使其值为使其值为3,并计算并计算3-xyy时时x的的值值.命令行编辑入门命令行编辑入门-y=3;x=y3-sqrt(y)x =25.2679 指令的续行输入指令的续行输入若一个表达式在一行写不下若一个表达式在一行写不下,可换行可换行,但必须在但必须在行尾加上四个英文句点行尾加上四个英文句点.例例3.求求的值的值.111

5、111112345678S S=1-1/2+1/3-1/4+1/5-1/6. +1/7-1/8S =0.6345命令行编辑入门命令行编辑入门- MATLAB变量及管理变量及管理 变量名的命名规则变量名的命名规则 以字母开头以字母开头,后面可跟字母、数字和下短线后面可跟字母、数字和下短线; 大小写字母有区别大小写字母有区别; 不超过不超过31个字符个字符.例如例如cel2_3,f,F和和Dui31是四个合法的变量是四个合法的变量.变量的名字最好能体现变量本身代表的物理意义,同时最好不要与变量的名字最好能体现变量本身代表的物理意义,同时最好不要与MATLABMATLAB预定义的变量或函数名重复。预

6、定义的变量或函数名重复。比如:高度:比如:高度:heightheight密度:密度:density density 或者或者 rho rho但长度最好不用但长度最好不用lengthlength,因为,因为lengthlength被被MATLABMATLAB预定义了,用于计算预定义了,用于计算向量或向量或矩阵矩阵的长度。如果自己用了的长度。如果自己用了lengthlength,MATLABMATLAB预定义就会失效。预定义就会失效。命令行编辑入门命令行编辑入门-MATLAB预定义变量预定义变量ans 用于结果的缺省变量名用于结果的缺省变量名pi 圆周率圆周率 eps 计算机的最小数计算机的最小数

7、inf 无穷大无穷大NaN 不定量不定量i或或j i=j=-1的开方的开方realmin 最小可用正实数最小可用正实数realmax 最大可用正实数最大可用正实数sin 正弦函数正弦函数 asin 反正弦函数反正弦函数 cos 余弦函数余弦函数 acos 反余弦函数反余弦函数 tan 正切函数正切函数 atan 反正切函数反正切函数 cot 余切函数余切函数 acot 反余切函数反余切函数 sec 正割函数正割函数 asec 反正割函数反正割函数 csc 余割函数余割函数 acsc 反余割函数反余割函数 sinh 双曲正弦函数双曲正弦函数 asinh 反双曲正弦函数反双曲正弦函数 cosh 双

8、曲余弦函数双曲余弦函数 acosh 反双曲余弦函数反双曲余弦函数 tanh 双曲正切函数双曲正切函数 atanh 反双曲正切函数反双曲正切函数 sech 双曲正割函数双曲正割函数 asech 反双曲正割函数反双曲正割函数 csch 双曲余割函数双曲余割函数 acsch 反双曲余割函数反双曲余割函数 coth 双曲余切函数双曲余切函数 acoth 反双曲余切函数反双曲余切函数 MATLAB的函数的函数MATLAB 常用函数常用函数abs(x) 绝对值绝对值sqrt(x)开平方开平方conj(z)共轭复数共轭复数round(x) 四舍五入四舍五入floor(x) 舍去正小数舍去正小数rat(x)

9、化为分数表示化为分数表示gcd(x,y) 最大公因数最大公因数exp(x) 自然指数自然指数log(x) e为底的对数为底的对数Log10(x) 10为底的对数为底的对数angle(z)复数复数z的相角的相角real(z)复数复数z的实部的实部imag(z)复数复数z的虚部的虚部fix(x) 舍去小数取整舍去小数取整ceil(x)加入正小数取整加入正小数取整sign(x)符号函数符号函数rem(x,y)求求x除以除以y的余数的余数lcm(x,y)最小公倍数最小公倍数pow2(x)以以2为底的指数为底的指数log2(x)以以2为底的对数为底的对数MATLAB 常用函数介绍常用函数介绍linspa

10、ce(x1, x2, n)逻辑运算逻辑运算MATLAB提供了3种逻辑运算符:&(与)、|(或)和(非)。逻辑运算的运算法则: 在逻辑运算中,确认非零元素为真,用1表示,零元素为假,用0表示。 设参与逻辑运算的是两个标量a和b,那么, a&b a,b全为非零时,运算结果为1,否则为0。 a|b a,b中只要有一个非零,运算结果为1。 a 当a是零时,运算结果为1;当a非零时,运算结果为0。例子:例子:5&2 5&0 2|0 0在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先级最低。级最低。例子:例

11、子:3+0&2who 列出在列出在MATLAB工作空间中已有的变量工作空间中已有的变量whos 列出驻留变量的同时列出驻留变量的同时, ,还给出维数及性质还给出维数及性质clear 删除内存中的变量(数据)删除内存中的变量(数据)clc 删除命令窗口的内容(已使用过的命令)删除命令窗口的内容(已使用过的命令)home 光标移到命令窗口的左上角光标移到命令窗口的左上角clf 删除图形窗口的内容删除图形窗口的内容 调出刚才使用过的命令调出刚才使用过的命令quit 退出退出MATLABMATLAB 常用函数介绍常用函数介绍MATLAB命令窗口的部分通用命令命令窗口的部分通用命令size(A,

12、1)size(A,2)length(A)flipud(A)fliplr(A)diag(A)diag(v)返回一个二元向量返回一个二元向量,第一个元素为第一个元素为A的行数的行数,第二个元素为第二个元素为A的列数的列数返回返回A的行数的行数返回返回A的列数的列数返回返回max(size(A)矩阵作上下翻转矩阵作上下翻转矩阵作左右翻转矩阵作左右翻转提取提取A的对角元素的对角元素, ,返回列向量返回列向量以向量以向量v作对角元素创建对角矩阵作对角元素创建对角矩阵size(A)数组操作函数数组操作函数最大值最大值max、最小值、最小值min、求和、求和sum和求平均值和求平均值mean等等函数函数,一

13、般作用于向量一般作用于向量,作用于矩阵时作用于矩阵时,是函数作用于矩阵是函数作用于矩阵相应列向量的结果相应列向量的结果,返回行向量返回行向量数值类型是:双精度数值类型是:双精度虚数和复数都当作双精度处理虚数和复数都当作双精度处理整数:数字表示整数:数字表示小数用数字和小数点表示小数用数字和小数点表示浮点数用数值、小数点和浮点数用数值、小数点和e表示。表示。e表示底数表示底数10格式显示格式显示短格式显示命令(短格式显示命令(format short) 长格式显示命令(长格式显示命令(format long)计算结果显示方式计算结果显示方式MATLAB 标点符号标点符号、矩阵元素运算、矩阵元素运

14、算空格:输入量之间的分隔符、数组元素分隔符空格:输入量之间的分隔符、数组元素分隔符应用例子应用例子传说古印度术士为国王发明了国际象棋(传说古印度术士为国王发明了国际象棋(64格),国王问他想要什格),国王问他想要什么报酬,术士说:请在第一个放一粒米,在第二格放么报酬,术士说:请在第一个放一粒米,在第二格放2粒米,以后粒米,以后每格上放的米的个数是前一格的一倍。把每格上放的米的个数是前一格的一倍。把64格子放满就行了。国王格子放满就行了。国王满口答应了这个要求。满口答应了这个要求。问题:问题:1 国王需要给多少粒米?国王需要给多少粒米?问题:问题:2 假设假设1粒米的长宽高都是粒米的长宽高都是1

15、mm,这些米需要多大的仓库才,这些米需要多大的仓库才能装的下这些米能装的下这些米(假定仓库是立方体的,以(假定仓库是立方体的,以m3为单位)为单位) ?m=0:63 %指数指数n=sum(2.m) %总米粒数总米粒数(n*1e-9)(1/3) %仓库的长宽高仓库的长宽高二二MATLAB绘图绘图 了解MATLAB的绘图功能 掌握二维图形和三维图形的绘制方法 能够进行常用的数据可视化处理21主要内容 2.1 二维图形 2.2 图形修饰与控制 2.3 三维图形222.1 二维图形二维图形plot函数绘制二维曲线,常用格式有: plot(x):缺省自变量的绘图格式,x可为向量或矩阵。 plot(x,

16、y):基本格式,x和y可为向量或矩阵。 plot(x1, y1, x2, y2,):多条曲线绘图格式,在同一坐标系中绘制多个图形。 plot(x, y, s):开关格式,开关量字符串s设定了图形曲线的颜色、线型及标示符号。23图形颜色、标记和线形参数表色彩字符色彩字符所定颜色所定颜色线型字符线型字符线型格式线型格式标记符号标记符号数据点形式数据点形式标记符号标记符号数据点形式数据点形式y黄黄-实线(默认)实线(默认).点点右三角形右三角形24figure, plot(x1, y1,k: x2, y2,r-.)例 x=3 5 7 6 12 24 15 33 6 9 7 2; plot(x)%绘制

17、以序号为横坐标,元素值为纵坐标的曲线绘制以序号为横坐标,元素值为纵坐标的曲线 x=0:pi/10:2*pi; y=sin(x); plot(x,y)%绘制以绘制以x为横坐标,为横坐标,y为纵坐标的曲线为纵坐标的曲线0246810120510152025303501234567-1-0.8-0.6-0.4-0.200.20.40.60.8125例 x=linspace(0,7); y1=sin(2*x); y2=sin(x.2); y3=(sin(x).2;%曲线曲线1:红色实线,:红色实线,+号显示数据点号显示数据点%曲线曲线2:黑色点线,:黑色点线,*号显示数据点号显示数据点%曲线曲线3:蓝

18、色虚线,上三角形显示数据点:蓝色虚线,上三角形显示数据点 figure, plot(x, y1, r-+, x, y2, k*:, x, y3, b-)01234567-1-0.8-0.6-0.4-0.200.20.40.60.81262.2 图形修饰与控制图形修饰与控制 title 给图形加标题给图形加标题 xlable 给给x轴加标注轴加标注 ylable 给给y轴加标注轴加标注 text 在图形指定的任意位置加标注在图形指定的任意位置加标注 gtext 利用鼠标将标注加到图形任意位置利用鼠标将标注加到图形任意位置 grid on 打开坐标网格线打开坐标网格线 grid off关闭坐标网格

19、线关闭坐标网格线 legend 添加图例添加图例 axis 控制坐标轴刻度控制坐标轴刻度27例:绘制正弦和余弦曲线,并加入网格和标注cleart=0:0.1:10;y1=sin(t);y2=cos(t);plot(t,y1,r,t,y2,b-);x=1.7*pi;1.6*pi;y=-0.3; 0.7;s=sin(t);cos(t);text(x, y, s);指定位置加标注指定位置加标注title(正弦和余弦曲线正弦和余弦曲线); 标题标题legend(正弦正弦,余弦余弦)%添加图例注解添加图例注解xlabel(时间时间)x坐标名坐标名ylabel(正弦正弦&余弦余弦)y坐标名坐标名g

20、rid on%添加网格添加网格axis square%将图形设置为正方形将图形设置为正方形0246810-1-0.8-0.6-0.4-0.200.20.40.60.81sin(t)cos(t)正 弦 和 余 弦 曲 线时 间正弦&余弦正 弦余 弦28MATLAB的图形编辑窗口29采用采用hold函数对图形进行比较显示函数对图形进行比较显示 cleart=0:pi/10:2*pi;y1=sin(t);y2=cos(t);y3= sin(t)-cos(t);figure;plot(t,y1);hold on; %后续图形叠加显示plot(t,y2);plot(t,y3);01234567-

21、1.5-1-0.500.511.530采用图形窗口分割方法进行比较显示采用图形窗口分割方法进行比较显示clear; close all; clc;t=0:pi/10:2*pi; y1=sin(t); y2=cos(t); y3=cos(t+pi/2); y4=cos(t+pi); figure;%将图形窗口分割成两行两列,要画的图形为第1行第1列subplot(2,2,1); plot(t,y1);legend(Line 1);title(fig.a)%将图形窗口分割成两行两列,要画的图形为第1行第2列subplot(2,2,2); plot(t,y2);%将图形窗口分割成两行两列,要画的图形

22、为第2行第1列subplot(2,2,3); plot(t,y3);%将图形窗口分割成两行两列,要画的图形为第2行第2列subplot(2,2,4); plot(t,y4);02468-1-0.500.5102468-1-0.500.5102468-1-0.500.5102468-1-0.500.5131字体、线条、坐标轴粗细设置字体、线条、坐标轴粗细设置clear; close all; clc;x=1:10;y = x.2;z = x.3;figure(1)plot(x,y,r-,Linewidth,2)hold on;plot(x,z,k-,Linewidth,2);xlabel(x,F

23、ontSize,16)ylabel(y,FontSize,16)legend(y=x2,y=x3,FontSize,16)set(gca,FontSize,16); set(gca,Linewidth,2); 32024681002004006008001000 xy y=x2y=x31234567891001002003004005006007008009001000 xy y=x2y=x3对数坐标对数坐标clear; close all; clc;x=1:10;y = x.2;figure(1)semilogx(x,y,r-,Linewidth,2)xlabel(x,FontSize,16

24、)ylabel(y,FontSize,16)legend(y=x2,FontSize,16)figure(2)semilogy(x,y,r-,Linewidth,2)xlabel(x,FontSize,16)ylabel(y,FontSize,16)legend(y=x2,FontSize,16)figure(3)loglog(x,y,r-,Linewidth,2)331001010102030405060708090100 xy y=x212345678910100101102xy y=x2练习%曲线的画法(请设置断点执行指令)a=0:10:360 %角度向量的度数x=a*pi/180 %角

25、度向量的弧度数figure %创建图形窗口plot(x,sin(x),x,cos(x) %画正弦和余弦曲线(横坐标刻度是弧度数)plot(a,sin(x),a,cos(x) %画正弦和余弦曲线(横坐标刻度是度数)plot(a,sin(a),a,cos(a) %画不正确的曲线(系统将度数当作弧度数)plot(x,sin(x),r,x,cos(x),k) %用红色画正弦线,用黑色画余弦线plot(x,sin(x),.,x,cos(x),o) %用点画正弦线,用圈画余弦线(曲线断裂)plot(x,sin(x),-.,x,cos(x),-) %用点虚线画正弦线,用长虚线画余弦线plot(x,sin(x

26、),.-,x,cos(x),-o) %正弦线用实线加点画,余弦线虚线和圈画练习h=plot(x,sin(x),x,cos(x) %画曲线时获取对象的句柄get(h(1) %获取第一条线的属性get(h(2) %获取第二条线的属性plot(sin(x),x,cos(x),x) %画反正弦和反余弦函数曲线plot(a,sin(x);cos(x) %用矩阵画两条曲线plot(x,imag(exp(i*x),x,exp(i*x) %用复数画正弦和余弦曲线plot(exp(i*x) %用复数画圆,呈现椭圆plot(real(exp(i*x),imag(exp(i*x) %效果同上figure, plot

27、(x,sin(x),r,x,cos(x),b,LineWidth,2) %分别用红色和蓝色画曲线, 2磅粗线axis equal %使坐标间隔相等,呈现圆2.3 三维图形三维图形 三维曲线图 plot3函数可以绘制三维曲线: plot3(x1, y1, z1, s1, x2, y2, z2, s2) 三维网格图 mesh函数为数据点绘制网格线:mesh(z) z为nm的矩阵,x与y坐标为元素的下标位置mesh(x, y, z) x, y, z分别为三维空间的坐标位置 三维曲面图 三维曲面的绘图是由surf函数完成的,用法和mesh类似。36例:函数plot3绘制的三维曲线图 cleart=0:

28、pi/50:10*pi;plot3(t,sin(t),cos(t),r:)grid on010203040-1-0.500.51-1-0.500.5137例:分别用mesh函数和surf函数绘制高斯矩阵z=peaks(40);mesh(z);% 网格线 figure%产生新的图形窗口surf(z); %着色表面图38观察点clearz=peaks(40);subplot(2,2,1); mesh(z);%绘制绘制子图子图1(默认视点)(默认视点)subplot(2,2,2);mesh(z);view(-15,60); %指定子图指定子图2的视点的视点subplot(2,2,3);mesh(z)

29、;view(-90,0); %指定子图指定子图3的视点的视点subplot(2,2,4);mesh(z);view(-7,-10); %指定子图指定子图4的视点的视点010203040010203040-10-505100510152025303540010203040-100100510152025303540-8-6-4-20246810051015202530354002040-8-6-4-2024681039三三 MATLAB数值运算数值运算 掌握矩阵、向量、数组和多项式的构造和运算方法 能够使用常用的几种函数进行一般的数值问题求解40主要内容 3.1 矩阵 3.2 向量 3.3 数组

30、 3.4 多项式 413.1 矩阵MATLAB = matrix(矩阵)+ laboratory(实验室)423.1.1 矩阵的构造 通过直接输入矩阵的元素构造矩阵: 用中括号用中括号 把所有矩阵元素括起来把所有矩阵元素括起来 同一行的不同数据元素之间用空格或逗号间隔同一行的不同数据元素之间用空格或逗号间隔 用分号(用分号(;)指定一行结束)指定一行结束 数据元素可以是表达式,系统将自动计算结果数据元素可以是表达式,系统将自动计算结果 可分成几行进行输入,用回车符代替分号可分成几行进行输入,用回车符代替分号43A=A= A = A; 1 2 3 4; 5 6 7 8 A = A; 1 2 3

31、4; 5 6 7 8 A= A; 9 10 11 12; 13 14 15 16 A= A; 9 10 11 12; 13 14 15 16A=1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16A=1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16A=A=1, 2, 3, 4; 5, 6, 7, 8; 9 10 11 12; 13 14 15 161, 2, 3, 4; 5, 6, 7, 8; 9 10 11 12; 13 14 15 16 A=A=1, 1, sqrtsqrt(4), 3, 4; 5, 2+4, 7, 8; 9

32、10 11 12; 13 14 15 (4), 3, 4; 5, 2+4, 7, 8; 9 10 11 12; 13 14 15 4242 3.1.2 矩阵下标与子矩阵提取矩阵下标与子矩阵提取 A(m, n)表示取A矩阵第m行、第n列的元素 A(:, n)A矩阵的第n列全部元素 A(m, :)A矩阵第i行的全部元素 A(m1:m2, n1:n2)从第m1行到第m2行,第n1列到 n2列的所有元素 子矩阵 A(m:end, n1:n2)从第m行到最末行, 第n1列到n2列的子块 A(:)把矩阵A从新排成一个长列矢量,该矢量的元素按矩阵的列进行排列44A(i:i+m,:) ;A(:,k:k+m);

33、A(i:i+m,k:k+m) 特殊矩阵特殊矩阵1通用的特殊矩阵常用的产生通用特殊矩阵的函数有:zeros:产生全0矩阵(零矩阵)。ones:产生全1矩阵(幺矩阵)。eye:产生单位矩阵。rand:产生01间均匀分布的随机矩阵。randn:产生均值为0,方差为1的标准正态分布随机矩阵。例子:输入矩阵例子:输入矩阵A、B的值的值A=1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 1646例子例子例3-2 分别建立33、32和与矩阵A同样大小的零矩阵。(1) 建立一个33零矩阵。zeros(3) (2) 建立一个32零矩阵。zeros(3,2) (3) 设A为23矩阵,

34、则可以用zeros(size(A)建立一个与矩阵A同样大小零矩阵。A=1 2 3;4 5 6; %产生一个23阶矩阵Azeros(size(A) %产生一个与矩阵A同样大小的零矩阵例子(续)例子(续)例3-3 建立随机矩阵:(1) 在区间20,50内均匀分布的5阶随机矩阵。(2) 均值为0.6、方差为0.1的5阶正态分布随机矩阵。命令如下:x=20+(50-20)*rand(5)y=0.6+sqrt(0.1)*randn(5)此外,常用的函数还有reshape(A,m,n),它在矩阵总元素保持不变的前提下,将矩阵A重新排成mn的二维矩阵。例子(续)例子(续)2用于专门学科的特殊矩阵 (1) 魔

35、方矩阵魔方矩阵有一个有趣的性质,其每行、每列及两条对角线上的元素和都相等。对于n阶魔方阵,其元素由1,2,3,n2共n2个整数组成。MATLAB提供了求魔方矩阵的函数magic(n),其功能是生成一个n阶魔方阵。magic(3)例子(续)例子(续)例 将101125等25个数填入一个5行5列的表格中,使其每行每列及对角线的和均为565。 M=100+magic(5)例:例: 修改矩阵A中元素的数值A=1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16;A(1,1)=0;A(2,2)=A(1,2)+A(2,1);A(4,4)=cos(0);则矩阵变为:A = 0

36、2 3 4 5 7 7 8 9 10 11 12 13 14 15 1513.1.3 矩阵的算术运算矩阵的算术运算 1矩阵的加减运算:(加)、(减) 2矩阵乘法:*(乘) 3矩阵除法:/ (右除)、 (左除) 4矩阵的乘方:(乘方) 5矩阵转置: (转置运算符)523.1.3 矩阵的算术运算(续)矩阵的算术运算(续) (1) 矩阵加减运算 假定有两个矩阵A和B,则可以由A+B和A-B实现矩阵的加减运算。运算规则是:若A和B矩阵的维数相同,则可以执行矩阵的加减运算,A和B矩阵的相应元素相加减。如果A与B的维数不相同,则MATLAB将给出错误信息,提示用户两个矩阵的维数不匹配。3.1.3 矩阵的算

37、术运算(续)矩阵的算术运算(续) (2) 矩阵乘法 假定有两个矩阵A和B,若A为mn矩阵,B为np矩阵,则C=A*B为mp矩阵。3.1.3 矩阵的算术运算(续)矩阵的算术运算(续) (3) 矩阵除法在MATLAB中,有两种矩阵除法运算:和/,分别表示左除和右除。如果A矩阵是非奇异方阵,则AB和B/A运算可以实现。AB等效于A的逆左乘B矩阵,也就是inv(A)*B,而B/A等效于A矩阵的逆右乘B矩阵,也就是B*inv(A)。对于含有标量的运算,两种除法运算的结果相同,如3/4和43有相同的值,都等于0.75。又如,设a=10.5,25,则a/5=5a=2.1000 5.0000。对于矩阵来说,左

38、除和右除表示两种不同的除数矩阵和被除数矩阵的关系。对于矩阵运算,一般ABB/A。3.1.3 矩阵的算术运算(续)矩阵的算术运算(续) (4) 矩阵的乘方 一个矩阵的乘方运算可以表示成Ax,要求A为方阵,x为标量。点运算点运算 在在MATLAB中,有一种特殊的运算,因为其运算符是中,有一种特殊的运算,因为其运算符是在有关算术运算符前面加点,所以叫点运算。点运算符在有关算术运算符前面加点,所以叫点运算。点运算符有有.*、./、.和和.。两矩阵进行点运算是指它们的对应元素。两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维参数相同。进行相关运算,要求两矩阵的维参数相同。 A=magic(

39、3) B=A*A C= A.*A3.1.4 矩阵的关系运算矩阵的关系运算 关系运算符:(小于小于)、(大于大于)=(大于或等于大于或等于)、=(等于等于)、=(不等于不等于)。 关系运算符的运算法则: 关系运算将对两个矩阵的对应元素进行比较关系运算将对两个矩阵的对应元素进行比较。 573.1.4 矩阵的关系运算(续)矩阵的关系运算(续) 关系运算符的运算法则为: (1) 当两个比较量是标量时,直接比较两数的大小。若关系成立,关系表达式结果为1,否则为0。 (2) 当参与比较的量是两个维数相同的矩阵时,比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行,并给出元素比较结果。最终的关系运算的结

40、果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成。3.1.4 矩阵的关系运算(续)矩阵的关系运算(续) (3) 当参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐个比较,并给出元素比较结果。最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成。3.1.4 矩阵的关系运算(续)矩阵的关系运算(续)例 产生5阶随机方阵A,其元素为10,90区间的随机整数,然后判断A的元素是否能被3整除。 (1) 生成5阶随机方阵A。A=fix(90-10+1)*rand(5)+10)(2) 判断A的元素是否可以被3整除。 P=rem(A,3)=0其中,r

41、em(A,3)是矩阵A的每个元素除以3的余数矩阵此时,0被扩展为与A同维数的零矩阵,P是进行等于(=)比较的结果矩阵。3.1.5 矩阵的逻辑运算矩阵的逻辑运算 必须是两个同维矩阵或其中一个矩阵为标量才能进行 MATLAB提供了一些逻辑函数逻逻 辑辑 函函 数数功功 能能all如果所有的元素都是非零值,返回1;否则,返回0。any如果有一个元素为非零值,那么返回1;否则,返回0isempty判断是否空矩阵isequal判断两矩阵是否相同isreal判断是否是实矩阵find返回一个由非零元素的下标组成的向量613.1.5 矩阵的逻辑运算矩阵的逻辑运算MATLAB提供了3种逻辑运算符:&(与

42、)、|(或)和(非)。逻辑运算的运算法则为: (1) 在逻辑运算中,确认非零元素为真,用1表示,零元素为假,用0表示。 (2) 设参与逻辑运算的是两个标量a和b,那么, a&b a,b全为非零时,运算结果为1,否则为0。 a|b a,b中只要有一个非零,运算结果为1。 a 当a是零时,运算结果为1;当a非零时,运算结果为0。3.1.5 矩阵的逻辑运算(续)矩阵的逻辑运算(续)若参与逻辑运算的是两个同维矩阵,那么运算将对矩阵相同位置上的元素按标量规则逐个进行。最终运算结果是一个与原矩阵同维的矩阵,其元素由1或0组成。若参与逻辑运算的一个是标量,一个是矩阵,那么运算将在标量与矩阵中的每个元

43、素之间按标量规则逐个进行。最终运算结果是一个与矩阵同维的矩阵,其元素由1或0组成。逻辑非是单目运算符,也服从矩阵运算规则。3.1.5 矩阵的逻辑运算(续)矩阵的逻辑运算(续)例 建立矩阵A,然后找出大于4的元素的位置。(1) 建立矩阵A。A=4,-65,-54,0,6;56,0,67,-45,0 (2) 找出大于4的元素的位置。find(A4)3.1.6 矩阵函数矩阵函数函函 数数功功 能能det计算矩阵所对应的行列式的值diag抽取矩阵对角线元素eig求特征值和特征向量inv求矩阵的逆阵lu三角分解Poly求特征多项式Rank求矩阵的秩Svd奇异值分解651求矩阵的行列式的值 X=1 2 3

44、 0; 5 6 0 8; 9 0 11 12; 0 14 15 16;det(X)ans =-5464662求矩阵的秩 X=1, 2, 3; 2, 3 -5; 4 7 1; rank(X)ans = 2673求逆矩阵 X=1 2 3 0; 5 6 0 8; 9 0 11 12; 0 14 15 16; Y=inv(X)Y = 0.2299 0.0908 0.0351 -0.0717 0.1940 0.0798 -0.0659 0.0095 0.1274 -0.0835 0.0322 0.0176 -0.2892 0.0084 0.0275 0.0377Y*X%矩阵与其逆阵相乘结果是单位矩阵an

45、s = 1.0000 0 0 0 0 1.0000 0 0 0 0 1.0000 0 0 0 0 1.0000 X*Y%矩阵的逆阵是唯一的ans = 1.0000 0 0 0 0 1.0000 0 0 0 0 1.0000 0 0 0 0 1.0000684求特征值和特征向量 X=-2 1 1;0 2 0;-4 1 3; V D=eig(X)V= -0.7071 -0.2425 0.3015 0 0 0.9045 -0.7071 -0.9701 0.3015D= -1 0 0 0 2 0 0 0 2695矩阵分解 A=2 -1 3;1 2 1;2 4 3; L, U=lu(A) %三角分解 L

46、 = 1.0000 0 0 0.5000 0.5000 1.0000 1.0000 1.0000 0U = 2.0000 -1.0000 3.0000 0 5.0000 0 0 0 -0.5000706求解线形方程组713.2 向量向量 向量是矢量运算的基础 行向量 列向量 723.2.1 向量的构造向量的构造 1逐个输入a=1 3 9 10 15 16%采用空格和逗号分隔构成行向量b=1; 3; 9; 10; 15; 16 %采用分号隔开构成列向量 2利用冒号表达式“:”生成向量x=1:2:9%初值=1,终值=9,步长=2z=1:5%初值=1,终值=5,默认步长=1 3利用函数生成向量 x=

47、linspace(1, 9, 5)%初值=1,终值=9,元素数目=5733.2.2 向量的运算向量的运算 1点积:dot函数 2叉积:cross函数 例 a = 1 2 3; b = 4 5 6; c = dot(a, b) d = cross(a, b) c =32d = -3 6 -3 74 I love MATLAB.在在MATLAB中,字符串是用单撇号括起来的字符序列。中,字符串是用单撇号括起来的字符序列。MATLAB将字符串当作一个行向量,每个元素对应一个将字符串当作一个行向量,每个元素对应一个字符,其标识方法和数值向量相同。也可以建立多行字符字符,其标识方法和数值向量相同。也可以建

48、立多行字符串矩阵。串矩阵。字符串是以字符串是以ASCII码形式存储的。码形式存储的。abs和和double函数都可函数都可以用来获取字符串矩阵所对应的以用来获取字符串矩阵所对应的ASCII码数值矩阵。相反,码数值矩阵。相反,char函数可以把函数可以把ASCII码矩阵转换为字符串矩阵。码矩阵转换为字符串矩阵。3.2.3 字符串向量字符串向量例2-13 建立一个字符串向量,然后对该向量做如下处理:(1) 取第15个字符组成的子字符串。(2) 将字符串倒过来重新排列。(3) 将字符串中的小写字母变成相应的大写字母,其余字符不变。(4) 统计字符串中小写字母的个数。3.2.3 字符串向量(续)字符串

49、向量(续)命令如下:ch=ABc123d4e56Fg9;subch=ch(1:5) %取子字符串revch=ch(end:-1:1) %将字符串倒排k=find(ch=a&ch x=1 2 3; 4 5 6; 7 8 9; y=9 8 7; 6 5 4; 3 2 1; x+y%数组和矩阵的加法规则相同ans = 10 10 10 10 10 10 10 10 10 x.*y%数组乘法:对应元素相乘ans = 9 16 21 24 25 24 21 16 9 x*y%矩阵乘法:按照线性代数理论进行ans = 30 24 18 84 69 54 138 114 9080多维数组维间处理的函

50、数多维数组维间处理的函数 1reshape 2size 3ndims 4cat 5permute 6ipermute 7shiftdim 8squeeze 813.4 多项式多项式多项式是形如P(x) = a0 xn+a1xn-1+an-1x+an的式子。在MATLAB中,多项式用行向量表示:P= a0 a1 an-1 an823.4.1 多项式的生成与表达多项式的生成与表达例:已知向量A=1 34 80 0 0,用此向量构造一多项式并显示结果。PA=poly(A) % poly convert roots to a polynomial.ans = 1 113 2606 -2720 0 0

51、PAX=poly2str(A,X)PAX = X4 - 34 X3 - 80 X2PAX=poly2str(PA,X)PAX = X5 + 113 X4 + 2606 X3 - 2720 X2833.4.2 多项式的运算多项式的运算 1. 多项式的算术运算 参加加减运算的多项式应该具有相同的阶次。 多项式乘法采用conv函数,除法由函数deconv完成 2. 求根 求多项式的根采用roots函数:roots(P) 3. 求值 函数polyval可以将某个特定数值代入多项式: polyval (P,X) 函数polyvalm可以求出当多项式中的未知数为方阵时的值。 4. 求导 使用polyder

52、函数对多项式求导:polyder(P) 。84上机指导3.5工作空间与内存变量 3.5.1变量的查看 3.5.2变量的文件保存与获取 85应用举例86应用举例87应用举例例 将表达式(x-4)(x+5)(x2-6x+9)展开为多项式形式,并求其对应的一元n次方程的根。 p=conv(1 -4,conv(1 5,1 -6 9) px=poly2str(p,x)x=roots(p)88四四 脚本编程基础脚本编程基础 对于简单问题,使用直接输入命令简单有效;对稍复杂和多次重复的应用,直接输入命令比较麻烦。MATLAB提供了逻辑解决方案,它允许用户把多个命令放在一个简单的文本文件中,如同在MATLAB

53、中键入命令一般,这种文件称为脚本文件,由于脚本文件以m为扩展名,它常称为M文件。脚本文件为文本形式的,对跨平台处理十分有利。 使用脚本文件,可以把命令保存在磁盘上,便于以后的访问;同时对使用大的数组也带来的方便;增加注释可以为脚本中的命令作文挡以免以后忘记。894.1 流程控制流程控制 为了便于应用,MATLAB提供了一些流程控制的命令。这些命令对脚本编写带来了一些方便,但是需要注意的是,尽量不要使用这些流程控制命令,尤其是循环控制命令。904.1.1 for 循环循环 for循环允许一组命令以固定的次数重复,例如for i = 1:5; for j = 1:4; A(i,j) = 1/(i+

54、j-1); endend91For循环应当注意的一些方面1. for循环不能使用内部重新赋值循环变量而终止;2. for循环内部接受任何有效的MATLAB数组;3. for循环可以嵌套;4. 只要有矩阵形式可以解决的问题,不要使用for循环。使用for循环的算法执行很慢,一个好的MATLAB算法不应当出现循环语句。Tic/toc5. 循环可以使用break跳出,但只跳出所在的循环,不跳出整个嵌套结构。924.1.2 while 循环循环 与for循环以固定的次数执行一组指令,while循环以不定的次数执行一组指令。While循环的一般形式为: while expression commands

55、 end 只要表达式expression里的所有元素为真,就执行命令串commands。通常表达式求值给一个标量值,单数组值也同样有效。934.1.3 if-else-end 结构结构 很多情况下,命令的序列需根据关系的检验有条件的执行,它由if-else-end结构提供。它的结构如下: if expression1 commands1 elseif expression2 commands2 elseif else commands end944.1.3 if-else-end 结构(续)结构(续) 在执行过程中,MATLAB依次检查各个表达式,只执行第一个表达式为真的命令串,接下来的关系表

56、达式不检验,跳过其余的if-else-end结构,而且,最后的else命令可有可无。954.1.4 try-catch 结构结构 可以进行错误的处理,提高计算的可靠性 try 可能出错的语句 catch 错误处理 end964.2 函数函数 把一个比较大的任务分解为多个比较小的任务,它们之间通过调用实现参数传递,小任务可以是函数。974.2.1 函数调用函数调用 常见的函数调用形式为: out1,out2,=function(in1,in2,) 一个函数可以嵌套,也可以调用其它的函数,甚至调用自己(也就是递归调用)。 函数文件,函数名称和文件名必须相同。 需要注意函数文件的放置位置,一般自己的

57、函数文件放在当前目录;如果对一个专题有了足够多的函数,可以生成一个工具箱,放在一个固定的目录下,并在MATLAB中加入这个目录路径即可。984.2.1 函数调用(续)函数调用(续) 使用函数可以加快计算速度。MATLAB首次执行一个函数时,它将打开的文件编译为存储器内部形式,加速了执行速度。普通的m文件不被编译,在每次编译时,文件将逐行解释执行。994.2.2 参数传递参数传递 在MATLAB中,参数具有自己的专有工作空间。函数中的参数和命令行参数不在一个空间中,它们的唯一联系为函数的输入输出变量。输入参数在函数中是可读的,但任何改动不会传递回上一级空间(除非它同时也是输出变量)。 使用glo

58、bal命令可以将变量说明为全局的,则在函数、命令行等都可以共享这些变量。在实际应用中,应当尽量避免使用全局变量。1004.2.3 函数注意事项函数注意事项 函数可以按少于函数M 文件中所规定的输入和输出变量进行调用,但不能用多于函数M 文件中所规定的输入和输出变量数目。如果输入和输出变量数目多于函数M 文件中function 语句一开始所规定的数目,则调用时自动返回一个错误。1014.2.3 函数注意事项(续)函数注意事项(续) 函数有它们自己的专用工作空间,它与MATLAB 的工作空间分开。函数内变量与MATLAB 工作空间之间唯一的联系是函数的输入和输出变量。如果函数任一输入变量值发生变化

59、,其变化仅在函数内出现,不影响MATLAB 工作空间的变量。函数内所创建的变量只驻留在函数的工作空间,而且只在函数执行期间临时存在,以后就消失。因此,从一个调用到下一个调用,在函数工作空间变量存储信息是不可能的。 1024.2.3 函数注意事项(续)函数注意事项(续) 当调用一个函数时,输入变量不会拷贝到函数的工作空间,但使它们的值在函数内可读。然而,改变输入变量内的任何值,那么数组就拷贝到函数工作空间。进而,按缺省,如果输出变量与输入变量相同,例如,函数x=fun(x, y, z) 中的x ,那么就将它拷贝到函数的工作空间。因此,为了节约存储和增加速度,最好是从大数组中抽取元素,然后对它们作

60、修正,而不是使整个数组拷贝到函数的工作空间。1034.2.3 函数注意事项(续)函数注意事项(续) 如果变量说明是全局的,函数可以与其它函数、MATLAB 工作空间和递归调用本身共享变量。为了在函数内或MATLAB 工作空间中访问全局变量,在每一个所希望的工作空间,变量必须说明是全局的。 实际编程中,无论什么时候应尽量避免使用全局变量。要是用了全局变量,建议全局变量名要长,它包含所有的大写字母,并有选择地以首次出现的M 文件的名字开头。如果遵循建议,则在全局变量之间不必要的互作用减至最小。 1044.2.3 函数注意事项(续)函数注意事项(续) MATLAB 以搜寻脚本文件的同样方式搜寻函数M 文件。例如,输入 cow ,MATLAB 首先认为cow 是一个变量。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论