《《MATLAB基础》PPT课件》由会员分享,可在线阅读,更多相关《《MATLAB基础》PPT课件(80页珍藏版)》请在金锄头文库上搜索。
1、MATLAB基础(版)基础(版)1. MATLAB操作环境操作环境2. 矩阵及其运算矩阵及其运算3. 语句、函数和窗口环境语句、函数和窗口环境4. 图形功能图形功能5. MATLAB 程序设计程序设计1. MATLAB操作环境操作环境一、MATLAB的安装、启动和退出 二、MATLAB的窗口构成三、MATLAB的语言要素一、一、MATLAB的安装、启动和退出的安装、启动和退出 1MATLAB软件的安装(略)软件的安装(略)2MATLAB的启动的启动方法方法1: 单击单击“开始开始程序程序Matlab6.5 Matlab6.5”程序项;程序项;双击桌面双击桌面Matlab6.5快捷图标;快捷图标
2、; 方法方法2:3MATLAB的退出的退出单击单击MATLAB命令窗口右上角关闭钮命令窗口右上角关闭钮X方法方法1:方法方法2: 单击菜单单击菜单“FileExit MATLAB”; 在命令窗口中键入命令在命令窗口中键入命令: quit或或exit. (注意小写注意小写) 方法方法3:图图1 MATLAB桌面工作环境桌面工作环境 二、二、MATLAB的窗口构成的窗口构成1标题栏、菜单栏、工具栏标题栏、菜单栏、工具栏 2命令窗口(右边)命令窗口(右边)用于接受用户输入的命令用于接受用户输入的命令,显示命令或程序执行结果显示命令或程序执行结果.3工作区工作区/当前目录窗口(左上)当前目录窗口(左上
3、)用于显示已定义内存变量信息用于显示已定义内存变量信息/当前工作目录信息当前工作目录信息.4命令历史窗口(左下);命令历史窗口(左下);显示用户在命令窗口已执行过的所有命令语句。显示用户在命令窗口已执行过的所有命令语句。5显示和修改当前目录名窗口(工具栏右侧)显示和修改当前目录名窗口(工具栏右侧)【注】其它几种窗口:文本编辑窗口、图形窗口、帮【注】其它几种窗口:文本编辑窗口、图形窗口、帮助文件显示窗口。助文件显示窗口。三、三、MATLAB的语言要素的语言要素1常数、矩阵、向量(数组)与字符串常数、矩阵、向量(数组)与字符串(2)矩阵、向量(数组):)矩阵、向量(数组): MATLAB的主要数据
4、对象是矩阵,的主要数据对象是矩阵,标量、向量(数组)都是它的特例。标量、向量(数组)都是它的特例。 (1)常数:)常数: MATLAB采用十进制数采用十进制数. 以下记数都是合法的:以下记数都是合法的:3, -33, 0.03, 1.5e-1, -5.4e12.(3)字符串:)字符串: 指用单引号指用单引号“”括起的字符序列。括起的字符序列。 【注】【注】几个特殊常量:几个特殊常量: MATLAB可直接识别复数可直接识别复数, 例如例如: 2+4i, 2-3j等等. 2运算符运算符(2)关系运算符:)关系运算符: 、 、 =、 = =、 =(3)逻辑运算符:)逻辑运算符: & (与)、(与)、
5、 | (或)、(或)、 (非)(非)(1)算术运算符:)算术运算符:/(右除)、(右除)、(左除)、(左除)、(幂)(幂) +(加)、(加)、- -(减)、(减)、*(乘)、(乘)、ans (默认变量名默认变量名) pi (圆周率圆周率) eps (计算机最小数计算机最小数)inf (无穷大无穷大) NaN (不定量不定量) i, j (虚数单位虚数单位)3变量、函数、表达式变量、函数、表达式(1)变量:)变量: MATLAB变量名必须以字母开头变量名必须以字母开头,并由字母、数字并由字母、数字和下划线组成和下划线组成, 最多含最多含31 个字符个字符, 区分大小写区分大小写.(2)函数:)函
6、数: MATLAB提供了大量的库函数,函数名一般由小写字提供了大量的库函数,函数名一般由小写字母组成。母组成。 (3)表达式:)表达式: 是由常量、变量、函数、运算符、圆括号所组成的是由常量、变量、函数、运算符、圆括号所组成的有效运算式。运算规则:方幂有效运算式。运算规则:方幂-乘除乘除-加减;括号加减;括号是由里到外;同级别从左至右。是由里到外;同级别从左至右。4语句(命令)语句(命令)一般形式:一般形式: 变量名变量名= 表达式表达式 (若缺省若缺省“变量变量=”,则系统默认,则系统默认ans为变量名为变量名)5M-文件文件 即程序文件,包括脚本即程序文件,包括脚本M-文件和函数文件和函数
7、M-文件文件. 6其它符号:其它符号: 续行符;续行符; % 注释符;注释符; ,(或;),(或;) 显示(或不显示)语句执行结果显示(或不显示)语句执行结果. 2. 矩阵及其运算矩阵及其运算 一、矩阵的输入 二、向量(数组)的输入三、矩阵的裁剪、拼接与修改 四、矩阵的数值运算一、矩阵的输入一、矩阵的输入1矩阵的直接输入矩阵的直接输入按元素排列顺序直接输入按元素排列顺序直接输入, 所有元素用方括号所有元素用方括号“ ”括括 住住; 同行元素用逗号或空格分隔同行元素用逗号或空格分隔, 不同行元素用分号不同行元素用分号 或回车分开或回车分开.例例1 A=1,2,3;4,5,6 A = 1 2 3
8、4 5 6 或或 A=1 2 3;4 5 6 或或 A=1 2 3 4 5 6 (回车)(回车) 【注】【注】 若不指定输出变量若不指定输出变量,则系统默认则系统默认ans为变量名;为变量名; 利用下标,比如利用下标,比如A(i,j),可以访问矩阵元素(例如,可以访问矩阵元素(例如, 2矩阵的函数生成矩阵的函数生成 空矩阵空矩阵 zeros(m ,n) 零矩阵零矩阵 ones(m,n) 1矩阵矩阵 eye(m,n) 单位矩阵单位矩阵 rand(m,n) (0,1) 均匀分布随机阵均匀分布随机阵 randn(m,n)(0,1) 标准正态分布随机矩阵标准正态分布随机矩阵 a=A(2,1), 输出输
9、出a=4)。)。例例2. z=zeros(2,3),u=ones(3) z = 0.0000 0.0000 u= 1.0000 1.0000 1.0000 例例3. e=eye(3,4),x=rand(1,3)e = 1.0000 0.0000 0.0000 1.0000 0.0000 0.0000 1.0000 0.0000 x = 0.2311 0.8913 0.0185 3利用利用M-文件生成矩阵文件生成矩阵例例4现有一现有一M-文件,其内容包含一行文件,其内容包含一行 MATLAB语句:语句: A = 1 2 3;4 5 6 在命令窗口中输入命令在命令窗口中输入命令(运行运行M-文件文
10、件):A = 1 2 3 4 5 6 gena (回车回车)4载入外部数据文件生成矩阵(载入外部数据文件生成矩阵(load, fread)例例5.现有一文本文件,其内容包含二行文本现有一文本文件,其内容包含二行文本(矩阵元矩阵元素素): 1 3 5 7 2 4 6 8 在命令窗口中输入命令在命令窗口中输入命令: load (回车回车)fen = 1 3 5 7 2 4 6 8 二、向量(数组)的输入二、向量(数组)的输入 1作为矩阵输入作为矩阵输入 例例6 A=1,2,3; %(行向量)(行向量) B=1;2;3; %(列向量)(列向量) C=rand(1,4); %(利用矩阵生成函数)(利用
11、矩阵生成函数) 2行向量的特殊输入方式行向量的特殊输入方式(1)由冒号)由冒号a:d:b生成等差数组:生成等差数组:从从a到到b公差为公差为d(默认默认1)的等差数组的等差数组. (2)由函数)由函数linspace(a,b,n)生成等差数组:生成等差数组: 从从a到到b共共n(默认(默认100)个数值)个数值. 例例7 A=1:5 ; % A=1 2 3 4 5 (公差公差 缺省为缺省为1) B=1:2:7; % B=1 3 5 7 (公差为公差为2) C=5:-2:-1; % C=5 3 1 -1 (公差为公差为-2) linspace(0,1,4); % ans = 0 0.3333 0
12、.6667 1.0 x=linspace(0,1); % 等差数组等差数组, 从从0到到1共共 100个数值个数值 三、矩阵的裁剪、拼接与修改三、矩阵的裁剪、拼接与修改 1. 矩阵的裁剪矩阵的裁剪在在MATLAB中,矩阵的元素可用其行标、列标表示。中,矩阵的元素可用其行标、列标表示。从一个矩阵中取出若干行(列)构成新矩阵称为裁剪,从一个矩阵中取出若干行(列)构成新矩阵称为裁剪,其中冒号其中冒号“:”的使用非常重要。的使用非常重要。 例例8. A=1 2 3 4;5 6 7 8;9 10 11 12; % 定义矩阵定义矩阵A A(3,:) % 提取提取A的第的第3行行, ans = 9 10 1
13、1 12 A(:,2) % 提取提取A的第的第2列列, ans = 2 6 10 X=A(2:3,1,3,4) % 提取提取A的第的第2,3行,行,1,3,4列列 X =5 7 8;9 11 122矩阵的拼接矩阵的拼接在在MATLAB中,可按照分块矩阵思想中,可按照分块矩阵思想,由小矩阵拼接由小矩阵拼接组合成大矩阵组合成大矩阵,但应注意所有小矩阵维数应当相容。但应注意所有小矩阵维数应当相容。 例例9. 由由A的第的第2行行,2行行1列零向量及列零向量及 2行行3列单位阵拼接列单位阵拼接 成成3行行4列大矩阵列大矩阵E . E=A(2,:);zeros(2,1),eye(2,3) E = 5 6
14、 7 8 0 1 0 0 0 0 1 0 3矩阵的编辑修改矩阵的编辑修改在在MATLAB中,通过对矩阵的部分元素中,通过对矩阵的部分元素(子矩阵子矩阵)重重新赋值新赋值,可以实现对矩阵元素的编辑和修改。可以实现对矩阵元素的编辑和修改。 例例10. A(3,1)=0 % 将将A的第的第3行行1列元素修改为列元素修改为0A = 1 2 1 0 5 6 0 1 0 10 11 12 A(1:2,3:4)=eye(2) % 将将A的第的第1,2行行3,4列子矩阵列子矩阵 改为改为2阶单位阵阶单位阵A = 1 2 1 0 5 6 0 1 0 10 11 12 A(:,4)= % 删除删除A的第的第4列列
15、A = 1 2 1 5 6 0 0 10 11 四、矩阵的数值运算四、矩阵的数值运算 1矩阵的基本运算矩阵的基本运算 AB (A,B同维数同维数,对应元素相加减)对应元素相加减)A*B (A列数列数=B行数行数,通常矩阵乘法通常矩阵乘法)AB (左除左除,A,B同行数同行数,方程方程AX=B解解) B/A (右除右除,A,B同列数同列数,方程方程XA=B解解)A (共轭转置共轭转置) Ap (矩阵乘幂矩阵乘幂,A为方阵为方阵) 2标量与矩阵的运算标量与矩阵的运算bA、b*A、bA、A/b (b与与A各元素做相应运算各元素做相应运算, 对于除法对于除法b只能做除数只能做除数)3矩阵的特殊运算(点
16、运算)矩阵的特殊运算(点运算)A.* B、 A.B、 A./B、 A.B (A、B维数相同,按对应元素运算维数相同,按对应元素运算)A.b、 b./A、 A.b、 b.A (b与与A各元素做相应运算各元素做相应运算)A. (只转置(只转置,不共轭)不共轭)例例11. A=1 2 3;3 1 2,B=2 1 0;3 0 2,C=1 2;3 0 A = 1 2 3 3 1 2B = 2 1 0 3 0 2 C = 1 2 3 0 X1=A+B, X2=C*B, X3=ABX1 = 3 3 3 6 1 4X2 = 8 1 4 6 3 0 X3 = 0.7143 -0.2857 0.8571 0 0
17、0 0.4286 -0.2857 A = 1 2 3 3 1 2B = 2 1 0 3 0 2 C = 1 2 3 0 X4=A,X5=C2X4 = 1 3 2 1 3 2 X5 = 7 2 3 6 Y1=2+A, Y2=2*A, Y3=2AY1 = 3 4 5 5 3 4 Y2 = 2 4 6 6 2 4 Y3 = 1.5000 0.5000 1.0000 A = 1 2 3 3 1 2B = 2 1 0 3 0 2 C = 1 2 3 0 Z1=A.*B, Z2=A.B, Z3=A.BZ1 = 2 2 0 9 0 4 Z2 = 2.0 0.50 0 1.0 0 1.0 Z3 = 1 2 1
18、 27 1 4 Z4=A.2, Z5=2.AZ4 = 1 4 9 9 1 4 Z5 = 2 4 8 8 2 4 A = 1 2 3 3 1 2B = 2 1 0 3 0 2 C = 1 2 3 03. 语句、函数和窗口环境语句、函数和窗口环境一、语句(命令) 二、函数三、数据显示格式与在线帮助四、历史命令的回调、编辑与重用历史命令的回调、编辑与重用五、五、 MATLAB工作区与目录操作工作区与目录操作一、语句(命令)一、语句(命令)1语句的一般形式:语句的一般形式:变量变量=表达式表达式【注】【注】若缺省若缺省“变量变量=”,则系统默认,则系统默认ans为变量名。为变量名。若语句末尾以分号若语
19、句末尾以分号“;”结束,则命令执行后不显结束,则命令执行后不显示计算结果示计算结果若语句太长可以使用续行符若语句太长可以使用续行符“”将其延续到下一行。将其延续到下一行。一行中可书写多个语句,各语句之间要用逗号一行中可书写多个语句,各语句之间要用逗号 (显示计算结果)或分号(不显示计算结果)分开。(显示计算结果)或分号(不显示计算结果)分开。例例1.a=1 2 3 4 5; b=1 3 5 7 9; . c=a.*b, d=a*b, e=a*bc = 1 6 15 28 45 d = 95 e = 1 3 5 7 9 2 6 10 14 18 3 9 15 21 27 4 12 20 28 3
20、6 5 15 25 35 45 2几个特殊常量几个特殊常量3字符串的输入字符串的输入在在MATLAB中,字符串它是按中,字符串它是按(行行)向量形式储存的,向量形式储存的,文本块则按矩阵形式储存的。文本块则按矩阵形式储存的。例例3. s1=Hello;s2=every;s3=body;s=s1,s2, ,s3s = Hello,every body h=河南大学河南大学;数学学院数学学院 h = 河南大学河南大学 数学学院数学学院 ans (默认变量名默认变量名) pi(圆周率圆周率) eps (计算机最小数计算机最小数)inf(无穷大)(无穷大) NaN(不定量)(不定量) i, j(虚数单
21、位)(虚数单位)二、函数二、函数1标量函数标量函数 (1)三角函数(以弧度为单位):)三角函数(以弧度为单位): sin(x) 正玄正玄 cos(x) 余玄余玄 tan(x) 正切正切 cot(x) 余切余切 sec(x) 正割正割 csc(x) 余割余割(2)其它函数:)其它函数: sqrt(x) 正平方根正平方根 exp(x) 以以e为底指数为底指数 log(x) 自然对数自然对数 abs(x) 绝对值或复数模绝对值或复数模 round(x)四舍五入取整四舍五入取整 floor(x) 向向-方向取整方向取整 ceil(x) 向向+方向取整方向取整 fix(x) 向向0方向取整方向取整 re
22、m(x,y) x除以除以y的余数的余数2向量函数向量函数max(x) 最大值最大值 min(x) 最小值最小值 mean(x) 平均值平均值sum(x) 求和求和 length(x) 长度长度 median(x) 中值中值 prod(x) 连乘积连乘积 sort(x) 由小到大排序由小到大排序 3矩阵函数矩阵函数(1)构造矩阵函数:)构造矩阵函数:zeros(n,m) 0阵阵 ones(n,m) 1阵阵 eye(n,n) 单位阵单位阵 rand(n,m) (0,1)均匀分布随机阵均匀分布随机阵 ) 正态分布随机阵正态分布随机阵diag(A) (构造或提取对角阵)(构造或提取对角阵)triu(A
23、)/tril(A) (提取上提取上/下三角阵下三角阵)(2)矩阵计算函数:)矩阵计算函数:m,n=size(A) (大小大小) det(A)(行列式)(行列式)rank(A) (秩)(秩) inv(A)(逆矩阵)(逆矩阵)trace(A)(矩阵迹)(矩阵迹) norm(A) (矩阵范数)(矩阵范数)4. 图形功能图形功能一、2维图形二、3维图形 MATLAB系统提供了丰富的二维和三维绘图函数,系统提供了丰富的二维和三维绘图函数,用户在绝大多数情况下直接利用这些函数即可达到图形用户在绝大多数情况下直接利用这些函数即可达到图形绘制要求,而不必访问那些低层绘图对象,因此极大地绘制要求,而不必访问那些
24、低层绘图对象,因此极大地方便了用户。方便了用户。一、一、2维图形维图形1基本格式基本格式plot(x,y,s) 绘制横标绘制横标x,纵标纵标y的光滑曲线的光滑曲线, 字符串字符串s指定颜色和线型指定颜色和线型. 【注】【注】若缺省若缺省x,则绘制以则绘制以y元素的下标为横标的折线图;元素的下标为横标的折线图;若若y为复向量,则为复向量,则plot(y)等效于等效于plot(real(y),imag(y);若缺省若缺省s,则以默认线型、颜色绘制曲线。则以默认线型、颜色绘制曲线。线型线型(线方式线方式) - 实线实线 :点线:点线 -. 虚点线虚点线 - 波折线波折线(点方式)(点方式) . 圆点
25、圆点 + 加号加号 * 星号星号 x x形形 o 小圆小圆 颜色:颜色: y 黄黄 r 红红 g 绿绿 b 蓝蓝 w 白白 k 黑黑 m 紫紫 c 青青例例1 绘制正玄曲线绘制正玄曲线 x=linspace(0,2*pi,30); y=sin(x); plot(x,y) % 默认线型、颜色默认线型、颜色 figure % 打开一个新的图形窗口打开一个新的图形窗口 plot(x,y,b*) % 指定颜色、线型指定颜色、线型: 绿色星号绿色星号 2画多重线(在同一个坐标系下画多条曲线)画多重线(在同一个坐标系下画多条曲线) 方法方法1:plot(x1,y1,x2,y2,xn,yn)方法方法2:pl
26、ot(X,Y) % X,Y为矩阵为矩阵方法方法3:hold on % 保持当前图形窗口绘图状态保持当前图形窗口绘图状态 plot(x1,y1), plot(xn,yn) hold off % 结束当前图形窗口绘图状态结束当前图形窗口绘图状态例例2在同一个坐标系下绘制正玄曲线及余玄曲线在同一个坐标系下绘制正玄曲线及余玄曲线 x=linspace(0,2*pi,30); y1=sin(x); y2=cos(x); plot(x,y1,x,y2) 或者或者 Y=sin(x);cos(x); plot(x,Y) 或者或者 hold on plot(x,y1 plot(x,y2 hold off 3网格
27、与标记(在图上加网格、标题、轴标记)网格与标记(在图上加网格、标题、轴标记)加图标题:加图标题: title(字符串字符串 )标记标记X轴:轴: xlabel(字符串字符串 )标记标记Y轴:轴: ylabel(字符串字符串)增加增加/取消网格:取消网格:grid / grid off加注释:加注释: text(a, b, 字符串字符串 ) % 坐标定位坐标定位 gtext(字符串字符串) % 鼠标定位鼠标定位增加增加/取消图例:取消图例:legend(字串字串1,字串字串2,)/legend off例例3绘制正玄绘制正玄,余玄曲线,并加上标题余玄曲线,并加上标题,网格网格,注释等。注释等。 x
28、=linspace(0, 2*pi, 30); y1=sin(x); y2=cos(x); plot(x,y1,x,y2) title(正玄正玄/余玄曲线余玄曲线) xlabel(时间时间T), ylabel(电压电压V) gtext(y=sin(x) gtext(y=cos(x) grid legend(sin,cos) 4多幅图形多幅图形激活子图命令:激活子图命令: subplot(m, n, p)将图形窗口分成将图形窗口分成mn个图形区域个图形区域, 选择第选择第p个子图区域个子图区域.子图区域编号沿头一行自左向右子图区域编号沿头一行自左向右,接着排下一行接着排下一行, 。例例4在一个图
29、形窗口分别绘制以下在一个图形窗口分别绘制以下4个函数曲线图,个函数曲线图,并加上图标题并加上图标题: y=sin(x), z=cos(x), u=2sin(x)cos(x), v=sin(x)/cos(x) x=linspace(0,2*pi,30);y=sin(x); subplot(2,2,1),plot(x,y) axis(0 2*pi -1 1),title(y=sin(x) z=cos(x); subplot(2,2,2),plot(x,z) axis(0 2*pi -1 1),title(z=cos(x) u=2*sin(x).*cos(x); subplot(2,2,3),plo
30、t(x,u) axis(0 2*pi -1 1),title(u=2sin(x)cos(x) v=sin(x)./cos(x); subplot(2,2,4),plot(x,v) axis(0 2*pi -20 20),title(v=sin(x)/cos(x) 5其它有关函数其它有关函数(1)figure 打开一个新的图形窗口打开一个新的图形窗口(2)close/clf或或clg 关闭关闭/清除图形窗口清除图形窗口(3)fplot(F,xmin xmax ymin ymax) 在指定区间在指定区间 内绘制由函数名内绘制由函数名F所指定的函数图形。所指定的函数图形。例例5绘制函数绘制函数y=s
31、in(x)/x曲线图曲线图. fplot(sin(x)./x,-20 20 -0.4 1.2) gtext(sin(x)/x) 二、三维图形二、三维图形 1绘制三维线图或点图绘制三维线图或点图 plot3(x,y,z) (x,y,z是同维向量是同维向量)或或 plot3(x,y,z,s) (s指定线型和颜色)指定线型和颜色)例例7作螺旋线(作螺旋线(0t ) x=sin(t),y=cos(t),z=t t=0:pi/50:10*pi; x=sin(t);y=cos(t);z=t; plot3(x,y,z,b) 2绘制网格曲面(分绘制网格曲面(分4步)步)(1)产生)产生x轴和轴和y轴分点向量轴
32、分点向量x,y;(2)产生网格数组(矩阵):)产生网格数组(矩阵): X,Y=meshgrid(x,y) (各行为各行为x的拷贝,各列为的拷贝,各列为y的拷贝的拷贝) (3)计算函数值(高度)矩阵:)计算函数值(高度)矩阵:Z=f(X,Y)(4)绘制三维网格图形:)绘制三维网格图形: mesh(X,Y,Z,C) 其中矩阵其中矩阵Z表示高度值表示高度值, 矩阵矩阵C指定颜色指定颜色(缺省取缺省取C=Z)。例例8绘制绘制“阔边帽阔边帽”曲面曲面: (-7.5x 7.5, -7.5y 7.5) x =-7.5:0.5:7.5; y=x; X,Y=meshgrid(x,y); R=sqrt(X.2+Y
33、.2)+eps; Z=sin(R)./R; mesh(X,Y,Z) 5. MATLAB 程序设计程序设计一、关系运算和逻辑运算二、M-文件的结构三、M-文件的建立、编辑与调用四、MATLAB的控制流语句 MATLAB MATLAB提供了一个完善的程序设计环境,使提供了一个完善的程序设计环境,使用户能够方便地编制复杂的程序,完成各种用户能够方便地编制复杂的程序,完成各种计算。本节先介绍关系运算、逻辑运算,再计算。本节先介绍关系运算、逻辑运算,再介绍介绍M-M-文件文件( (即程序文件即程序文件) )的结构及的结构及MATLABMATLAB的的程序控制流语句。程序控制流语句。一、关系运算和逻辑运算
34、一、关系运算和逻辑运算当作用于两个同样大小矩阵时,则分别对两个矩当作用于两个同样大小矩阵时,则分别对两个矩阵的对应元素运算,结果是一个阵的对应元素运算,结果是一个0-1矩阵。矩阵。1. 关系运算关系运算(1)关系运算符:)关系运算符:(2)关系表达式:)关系表达式:【注】【注】关系运算本质上是标量运算,关系表达式的关系运算本质上是标量运算,关系表达式的 值是逻辑值(值是逻辑值(0-假假, 1-真);真); ; ; = ;= = ; = 指用关系运算符将两个同类型的量指用关系运算符将两个同类型的量(或表达式或表达式)连接起来的式子。连接起来的式子。D = 0 0 1 0 0例例1对向量进行关系运
35、算。对向量进行关系运算。 A=1:5, B=5:-1:1 % 输入向量输入向量A, BA = 1 2 3 4 5 B = 5 4 3 2 1 C=(A=4) % 关系表达式关系表达式A=4C = 0 0 0 1 1 D=(A=B) % 关系表达式关系表达式A=B当作用于两个同样大小矩阵时,当作用于两个同样大小矩阵时, 则分别对两个矩则分别对两个矩阵的对应元素运算,结果是一个阵的对应元素运算,结果是一个0-1矩阵。矩阵。(真值表真值表见见P27)2. 逻辑运算逻辑运算(1)逻辑运算符:)逻辑运算符:& (and,与与)、| (or,或或)、 (not,非非) (2)逻辑表达式:)逻辑表达式:指用
36、逻辑运算符将两个逻辑量连接起来的式子。指用逻辑运算符将两个逻辑量连接起来的式子。【注】【注】逻辑运算本质上是标量运算,它将任何非零逻辑运算本质上是标量运算,它将任何非零 元素视为元素视为1(真);(真);d = 0 0 0 1 1 1 1 1 1例例2对向量进行逻辑运算。对向量进行逻辑运算。 a=1:9, b=9-a % 输入向量输入向量a,b a = 1 2 3 4 5 6 7 8 9 b = 8 7 6 5 4 3 2 1 0 c= (a4) % 逻辑表达式逻辑表达式 (a4)c = 1 1 1 1 0 0 0 0 0 d=(a=3)&(b=3)&(b a=1 0 -5 0;-3 0 8
37、2 % 输入矩阵输入矩阵aa = 1 0 -5 0 -3 0 8 2 b=all(a), c=any(a) %调用逻辑函数调用逻辑函数b = 1 0 1 0c = 1 0 1 1 x=isempty(a) % 判定判定a是否为空是否为空, 不能不能 用关系式用关系式”a=”! x = 0y = 1 3 4 y=find(c) z=find(a) % 1个输出参数个输出参数 z = 1 2 5 6 8 m,n=find(a) % 2个输出参数个输出参数 m = 1 2 1 2 2n = 1 1 3 3 4% 返回向量返回向量c = 1 0 1 1 中非零元下标中非零元下标a = 1 0 -5 0
38、 -3 0 8 2二、二、M-文件的结构文件的结构 脚本文件的结构比较简单,它没有输入参数和输出脚本文件的结构比较简单,它没有输入参数和输出参数,只是一些参数,只是一些MATLAB命令行的组合。脚本文件中命令行的组合。脚本文件中定义的变量都是全局变量。定义的变量都是全局变量。1脚本文件脚本文件(亦称命令亦称命令M-文件文件)通常函数文件包含以下几个部分:通常函数文件包含以下几个部分:2函数文件函数文件(亦称函数亦称函数M-文件文件)(1)函数定义行)函数定义行: 位于文件首行位于文件首行,以以function开头开头; (2)帮助信息)帮助信息: 紧跟函数定义行后紧跟函数定义行后,以以%开头注
39、释行开头注释行;(3)函数体)函数体: 函数的执行语句部分函数的执行语句部分; (4)注释部分)注释部分: 命令行中以命令行中以“%”开始直到该行结束开始直到该行结束;例例4.4.给定矩阵给定矩阵A=1 2 3;4 5 6; % 输入矩阵输入矩阵AB=4 0 1;0 1 2; % 输入矩阵输入矩阵BC=A+B % 计算输出计算输出A与与B的和的和D=A-B % 计算输出计算输出A与与B的差的差编写命令文件编写命令文件,输入矩阵输入矩阵A、B, 并计算输出它们的和与差。并计算输出它们的和与差。解:建立如下解:建立如下M-文件文件将上述文件以为名存盘,然后在命令窗口将上述文件以为名存盘,然后在命令
40、窗口调用此调用此M-文件,则有文件,则有C = 5 2 4 4 6 8 SY00504function C,D=SY00505(A,B)% 给定矩阵给定矩阵A和和B, 计算输出其矩阵和计算输出其矩阵和C与矩阵差与矩阵差DC=A+B; % 计算矩阵和计算矩阵和D=A-B; % 计算矩阵差计算矩阵差例例5. 编写函数文件编写函数文件, 计算任意两个同维数矩阵的和与差计算任意两个同维数矩阵的和与差.解:建立如下函数文件解:建立如下函数文件以为名存盘以为名存盘, 然后在命令窗口调用此函数文件然后在命令窗口调用此函数文件.D = -3 2 2 4 4 4 A=1 2 3;4 5 6; B=4 0 1;0
41、 1 2; %输入参数赋值输入参数赋值 C,D=SY00505(A,B) % 调用函数调用函数SY00505.m 函数文件可以递归调用。函数文件可以递归调用。【注】【注】函数文件的首行须以函数文件的首行须以function开头开头,后跟输出参后跟输出参数数(多于多于1个时用方括号括起个时用方括号括起), 函数名及输入参量函数名及输入参量(圆括圆括号括起号括起), 参量之间用逗号隔开。参量之间用逗号隔开。函数文件的变量一般是局部变量,可以用函数文件的变量一般是局部变量,可以用global命令命令将某些变量说明为全局变量。将某些变量说明为全局变量。函数文件名一般应与函数定义行中的函数名相一致。函数
42、文件名一般应与函数定义行中的函数名相一致。C = 5 2 4 4 6 8D = -3 2 2 4 4 4三、三、M-文件的建立、编辑与调用文件的建立、编辑与调用1M-文件的建立与编辑文件的建立与编辑方法方法1:在命令窗口输入命令:在命令窗口输入命令:edit M-文件名文件名 即可打开相应即可打开相应M-文件编辑器。文件编辑器。方法方法2:单击菜单:单击菜单“File”-“New”-“M-file” 即可打开空白即可打开空白M-文件编辑器;文件编辑器;2M-文件的调用文件的调用方法方法1:在:在MATLAB命令窗口中直接键入命令窗口中直接键入M-文件名文件名, 然后回车然后回车,即可运行该即可
43、运行该M-文件文件;方法方法2:在:在M-文件编辑窗口中文件编辑窗口中, 单击工具钮单击工具钮 RUN 或或 菜单菜单 Debug/RUN,即可运行该,即可运行该M-文件。文件。 其中,实际参数和形式参数可以不同;输入参数要其中,实际参数和形式参数可以不同;输入参数要用圆括号将其括起,输出参数多于一个时,要用方括用圆括号将其括起,输出参数多于一个时,要用方括号号“”将其括起;参数间用逗号隔开。将其括起;参数间用逗号隔开。【注】【注】被调用的被调用的M-文件必须位于当前目录或文件文件必须位于当前目录或文件搜索路径范围内。搜索路径范围内。调用函数文件时,须事先对输入参量赋值,然后调用函数文件时,须
44、事先对输入参量赋值,然后按照以下格式调用按照以下格式调用输出参量输出参量=函数名(输入参量)函数名(输入参量) (回车)(回车)使用以下命令格式可将指定目录设置为当前目录使用以下命令格式可将指定目录设置为当前目录: cd 路径路径目录名目录名四、四、MATLAB的控制流语句的控制流语句if elseif elseif else end1.选择结构选择结构(1)if 语句语句:基本功能基本功能:若表达式若表达式j值为真值为真,则执行语句体则执行语句体j (j=1,n) ,否则否则,执行执行语句体语句体n+1;然后执行然后执行end后续命令后续命令.【注】【注】else子句与子句与elseif子句
45、不是必需的子句不是必需的,但关键字但关键字“end”不能不能省省.解:编写函数文件解:编写函数文件()如下:如下:例例6. 编写函数文件编写函数文件,计算分段函数计算分段函数: function y= fenduan(x)If x=0 y=0; elseif x %调用函数调用函数 y1=fenduan(-3)y1 = 0 y2=fenduan(3.5) y3=fenduan(7.3)switch case 值值1 case 值值 otherwise end()()switch语句语句:基本功能基本功能: 首先计算首先计算表达式的值表达式的值, 若该值与若该值与值值j(j=1,2,n)相等相等
46、, 则则执行语句体执行语句体j, 否则否则, 执执行语句体行语句体n+1; 然后执然后执行行end的后续命令。的后续命令。【注】【注】 otherwise子句子句不是必需的不是必需的, 但关键但关键字字“end”不能省不能省.例例7编写命令文件编写命令文件, 从键盘输入某学生成绩从键盘输入某学生成绩 (5分制分制), 由计算机判断并输出该生成绩的优良等级由计算机判断并输出该生成绩的优良等级.解解: 编写命令文件编写命令文件 (SY00507.m)如下:如下:x=input(请输入您的分数请输入您的分数: x=);switch x case 5 disp(优秀!优秀!); case 4 disp
47、(良好!良好!); case 3 disp(及格!及格!); otherwise disp(不及格!不及格!) end %运行程序运行程序 SY00507 请输入您的分数请输入您的分数: x=4良好!良好! 基本功能基本功能: 循环循环循环循环变量依次取矩阵的每一列变量依次取矩阵的每一列, 然后执行一次语句体然后执行一次语句体;遍遍历矩阵各列后历矩阵各列后, 然后执行然后执行end的后续命令的后续命令.。2. 循环结构循环结构(1)for 语句语句:for 循环变量循环变量=矩阵矩阵 语句体语句体endfor x=a:b:c 语句体语句体end简简化化格格式式 【注】【注】简化格式中步长简化格
48、式中步长b省略时省略时, 其则默认步长为其则默认步长为1. for循环不能由循环体内给循环变量赋值来终止;循环不能由循环体内给循环变量赋值来终止; for循环可以按需要进行嵌套;循环可以按需要进行嵌套; %调用函数调用函数 h=hhilb(3,4) h=hhilb(3,4)h = 1 1/2 1/3 1/4 h = 1 1/2 1/3 1/4 1/2 1/3 1/4 1/5 1/2 1/3 1/4 1/5 1/3 1/4 1/5 1/6 1/3 1/4 1/5 1/6 例例8. 编写函数文件编写函数文件, 产生产生mn阶阶Hilber矩阵。矩阵。解解: 编写函数文件编写函数文件()如下如下:f
49、unction H=hhilb(m,n) % 要求要求H(i,j)=1/(i+j-1)H=zeros(m,n); % 预分配预分配 for i=1:m for j=1:n H(i,j)=1/(i+j-1); end end format rat, %有理表示有理表示H=H; 例例8*.8*.编写函数文件编写函数文件, ,计算并输出矩阵计算并输出矩阵A A的各行向量的的各行向量的 元素和元素和. . %调用函数调用函数 A=1 2 3 4;5 6 7 8A = 1 2 3 4 5 6 7 8 X=hanghe(A)X = 10 26解解: 编写函数文件编写函数文件()如下如下:function
50、X=hanghe(A)m,n=size(A); % 计算计算A维数维数 X=zeros(m,1); % 零初始化零初始化 for y=A X=X+y; end(2)while语句语句while 语句体语句体end 基本功能基本功能: 若关系表若关系表达式值为真达式值为真, 则反复执行则反复执行语句体语句体, 直至关系表达式直至关系表达式值为假值为假, 则终止循环则终止循环, 转转而执行而执行end的后续命令。的后续命令。【注】【注】若关系表达式值为矩阵若关系表达式值为矩阵,则仅当结果矩阵的则仅当结果矩阵的所有元素均为真时才执行循环体所有元素均为真时才执行循环体; 否则不执行循环体。否则不执行循
51、环体。循环体中用循环体中用break命令可强行中止循环命令可强行中止循环; 用用continue命令可中止循环的当前迭代命令可中止循环的当前迭代, 转而执行下一次迭代。转而执行下一次迭代。 for用于循环次数确定用于循环次数确定, 而而while用于循环次数不确用于循环次数不确定。定。 eeps % eeps % 运行程序运行程序 n = 53 n = 53EPS=1; n=0;EPS=1; n=0; % 赋初值赋初值, n用以累计循环次数用以累计循环次数while (1+EPS)1 % while (1+EPS)1 % 进入循环进入循环 EPS=EPS/2;n=n+1; % EPS EPS=
52、EPS/2;n=n+1; % EPS的值减半的值减半, ,n累计加累计加1end end EPS=EPS*2; % EPS=EPS*2; % 恢复恢复EPSEPS最小有效值最小有效值 n % n % 输出输出n n format short e,EPS % format short e,EPS % 短科学记数法短科学记数法输出输出EPSEPS 例例9编写编写M-文件文件,计算计算eps的值的值(使用大写变量使用大写变量EPS )。解:编写命令文件解:编写命令文件()如下如下:3. 其它控制流语句其它控制流语句(1)try 语句语句trytry 1catchcatch 2endend 基本功能基
53、本功能: 正常情况下只执行正常情况下只执行 ; 当执当执行语行语出现错误时出现错误时, 则将错误信息写入系统变则将错误信息写入系统变量量 lasterr, 并转向执行并转向执行。function X=SY00510(A,B) function X=SY00510(A,B) try try X=A*B; X=A*B; catch catch disp(* disp(*错误乘法:错误乘法:A*B*) A*B*) lasterr lasterr X=; X=; end end 例例10. 计算矩阵计算矩阵A,B的积的积, 当不能相乘时当不能相乘时, 输出空矩阵输出空矩阵 并显示相应错误信息。并显示相
54、应错误信息。解解: 编写函数文件编写函数文件(SY00510.m)如下如下: X = 10 13 X = 10 13 28 31 28 31 A=1 2 3;4 5 6;B=2 1;4 3; A=1 2 3;4 5 6;B=2 1;4 3; % A,BA,B赋值赋值 X=SY00510(A,B) X=SY00510(A,B) %调用函数调用函数 * *错误乘法:错误乘法:A*B*A*B* ans = Error using = * ans = Error using = * Inner matrix dimensions Inner matrix dimensions must agree.m
55、ust agree. X = X = A=1 2 3;4 5 6;C=2 1;4 3;0 2; A=1 2 3;4 5 6;C=2 1;4 3;0 2; X=SY00510(A,C) X=SY00510(A,C) %调用函数调用函数pause / pause(n) 暂停程序执行暂停程序执行(n秒秒), 按任意键按任意键 继续;继续;(2)人机交互命令)人机交互命令return 结束当结束当 前子函数的执行前子函数的执行, 返回主返回主 函数或命令窗口函数或命令窗口.input(提示信息提示信息) 屏幕显示提示信息屏幕显示提示信息, 等待用等待用户户 由键盘输入数据;由键盘输入数据;input(
56、提示信息提示信息,s) 同上同上, 等待用户由键盘输等待用户由键盘输入字符入字符 串串(不用带单引号不用带单引号).keyboard 将程序交由键盘控制将程序交由键盘控制, 键入键入 return即可恢复程序控制即可恢复程序控制.function X=anysum(A,B) try X=A+B; catch k=min(size(A);size(B); X=A(1:k(1),1:k(2)+B(1:k(1),1:k(2);end练习练习编写函数文件求任意两个矩阵的和,当其维数编写函数文件求任意两个矩阵的和,当其维数 不一致时,进行必要的剪裁。不一致时,进行必要的剪裁。解解: 编写函数文件编写函数文件()如下如下: X=anysum(A,B) X=anysum(A,B) %调用函数调用函数 %调用函数调用函数 , 先对先对A,BA,B赋值赋值. A=1 2 3 4;4 3 2 1,B=2 1 4;3 5 7;1 4 2 A=1 2 3 4;4 3 2 1,B=2 1 4;3 5 7;1 4 2A = 1 2 3 4A = 1 2 3 4 4 3 2 1 4 3 2 1B = 2 1 4B = 2 1 4 3 5 7 3 5 7 1 4 2 1 4 2X = 3 3 7X = 3 3 7 7 8 9 7 8 9