1、第第2章章 基本使用方法基本使用方法.对于任何一门语言来说,要用它编写程序,对于任何一门语言来说,要用它编写程序,首先需要掌握其基本的数据类型。首先需要掌握其基本的数据类型。Matlab的数据类型包括的数据类型包括:数值型、字符串型、数值型、字符串型、元胞型、结构型。元胞型、结构型。Matlab的数据是通过变量存储在内存中的。的数据是通过变量存储在内存中的。.1.常量:常量:在在Matlab中在默认的情况下中在默认的情况下,常量常量的值为常的值为常数。如果在程序中没有专门给这些变量定义,那数。如果在程序中没有专门给这些变量定义,那么系统将给出它们的默认值,用户可以直接使用;么系统将给出它们的默
2、认值,用户可以直接使用;如果用户在程序中对它们有了新的定义,则这些如果用户在程序中对它们有了新的定义,则这些变量将保留新值。变量将保留新值。.常用的数学常量常用的数学常量pi:pi或或4*atan(1)i或或 j:虚数单位,例如:虚数单位,例如:3+i*2或或3+2jeps:浮点数的相对误差,:浮点数的相对误差,eps=2.2204e-016=2(-52)Inf(inf):无穷大,即:无穷大,即:1/0,2/0NaN(nan):代表不定值,即:代表不定值,即:inf/inf 或或0/0realmax:最大的正浮点数,即:最大的正浮点数,即:1.7977e+308realmin:最小的正浮点数,
3、即:最小的正浮点数,即:2.2251e-308ans:默认变量名,应答最近一次运算结果。:默认变量名,应答最近一次运算结果。.2 变变 量量 变量是变量是Matlab的基本元素之一,与其他常规程的基本元素之一,与其他常规程序设计语言不同的是序设计语言不同的是Matlab语言不要求对所使用的语言不要求对所使用的变量进行事先说明,也不需要指定变量的类型。变量进行事先说明,也不需要指定变量的类型。.1.变量名必须以字母开头。变量名必须以字母开头。2.变量名中包含字母、数字或下划线变量名中包含字母、数字或下划线(不能含有不能含有 标点符号标点符号)。3.变量名区分大小写。变量名区分大小写。4.关键字关
4、键字(if,while等等)不能作为变量名。不能作为变量名。5.变量名长度,可以用变量名长度,可以用namelengthmax获得获得.变量的命名规则变量的命名规则.变量的赋值变量的赋值 变量表达式:变量表达式:“”表示赋值号,等号右端表示赋值号,等号右端表达式的计算结果赋给等号左端的变量;表达式的计算结果赋给等号左端的变量;如果如果“”左端无定义的变量名时,计算结果左端无定义的变量名时,计算结果赋给系统默认的变量赋给系统默认的变量ans。.注意:用户如果在对某个变量赋值时,如果注意:用户如果在对某个变量赋值时,如果该变量已经存在,系统则会自动使用新值来替代该变量已经存在,系统则会自动使用新值
5、来替代该变量的旧值。该变量的旧值。.矩阵的输入矩阵的输入 Matlab是是矩阵实验室,因此是是矩阵实验室,因此Matlab的最的最基本、最重要的功能就是进行实数或复数矩阵基本、最重要的功能就是进行实数或复数矩阵的运算。的运算。.矩阵输入的方法矩阵输入的方法1.直接输入矩阵。直接输入矩阵。2.通过语句生成矩阵。通过语句生成矩阵。3.由矩阵生成函数产生特殊矩阵。由矩阵生成函数产生特殊矩阵。4.用户自己编写用户自己编写M文件产生矩阵。文件产生矩阵。5.通过导入外部数据文件生成矩阵通过导入外部数据文件生成矩阵。.(1)矩阵中元素应用方括号括住。矩阵中元素应用方括号括住。(2)每行内的元素间用逗号或空格
6、隔开;每行内的元素间用逗号或空格隔开;(3)行与行之间用分号或回车键隔开。行与行之间用分号或回车键隔开。(4)元素可以是数值或表达式。元素可以是数值或表达式。1 直接输入矩阵直接输入矩阵.例:例:mc=1 2;3 4;5 6 md=1+sqrt(4)2;3 4+6;5 6 me=1 4 2 3 6 5.2 通过语句生成矩阵通过语句生成矩阵(1)使用使用from:step:to方式生成向量。方式生成向量。说明:说明:from,step,to 分别表示开始值、步长和结束分别表示开始值、步长和结束值。值。step省略时为省略时为step=1。当当step0而而fromto时为空矩阵。时为空矩阵。当当
7、step0而而fromto时为空矩阵。时为空矩阵。.例:例:a1=2:5 a2=2:0.5:4 a3=5:-1:2 a4=2:-1:3,a_1=1:2:5;1:3:7 a_2=3:-1:1;4:-1:2.(2)linspace(a,b,n)生成线性等分向量生成线性等分向量 说明:说明:a,b,n 3个参数分别表示开始值、个参数分别表示开始值、结束值和元素个数。生成从结束值和元素个数。生成从a到到b之间线性分之间线性分布的布的n个元素的行向量个元素的行向量.n默认值为默认值为100。.例:例:linspace(2,8,7)linspace(2,8).(2)logspace(a,b,n)生成对数等
8、分向量生成对数等分向量 说明:说明:a,b,n 3个参数分别表示开始值、个参数分别表示开始值、结束值和元素个数。生成从结束值和元素个数。生成从 到到 之间按之间按对数等分的对数等分的n个元素的行向量个元素的行向量.默认值默认值n为为5010a10b.例:例:logspace(0,2,3)logspace(1,2).3 由函数生成特殊矩阵由函数生成特殊矩阵zeros(m,n):产生产生m*n的全的全0矩阵;矩阵;ones(m,n):产生产生m*n的全的全1矩阵;矩阵;rand(m,n):产生均匀分布随机矩阵,元素产生均匀分布随机矩阵,元素 取值范围为取值范围为01;randn(m,n):产生正态
9、分布的随机矩阵;产生正态分布的随机矩阵;magic(n):产生产生n阶魔方矩阵;阶魔方矩阵;eye(m,n):产生产生m*n的单位矩阵;的单位矩阵;diag(m):产生以产生以m向量为对角元素的对角阵向量为对角元素的对角阵.例:例:zeros(3,2)ones(1,5)rand(3,2)magic(4)eye(4,2)m=3:-1:1 diag(m)diag(m,1).170010250093600841700025000360004怎样生成给定的矩阵怎样生成给定的矩阵A1=A2=.4 编写编写M文件产生矩阵文件产生矩阵 对于经常需要调用的矩阵,尤其是比较大而复对于经常需要调用的矩阵,尤其是比
10、较大而复杂的矩阵,用户也可以通过专门的杂的矩阵,用户也可以通过专门的M文件创建矩阵。文件创建矩阵。.5 通过导入外部数据文件生成矩阵。通过导入外部数据文件生成矩阵。通过选择菜单通过选择菜单“import data”加载数据加载数据X.xls或或X.txt文件。文件。.2.1 简单的数学运算简单的数学运算 Matlab的运算主要包括:算术运算、的运算主要包括:算术运算、关系运算、关系运算、逻辑运算逻辑运算。.运算级别先乘方、再乘除、后加减,同级运算运算级别先乘方、再乘除、后加减,同级运算 自左向右自左向右,()可改变运算顺序可改变运算顺序.运算顺序运算顺序2.1.1 最简单的计算器使用法最简单的
11、计算器使用法.反正割反正割asec正割正割sec余割余割余切余切正切正切余弦余弦正弦正弦含义含义csccottancossin名称名称三角函数三角函数反余割反余割acsc反余切反余切acot反正切反正切atan反余弦反余弦acos反正弦反正弦asin含义含义名称名称2.1.2 Matlab中的常用数学函数中的常用数学函数.指数和对数函数指数和对数函数名称名称含义含义exp指数函数指数函数log自然对数自然对数log10常用对数常用对数log2以为底的对数以为底的对数pow2的幂的幂sqrt平方根平方根.复数函数复数函数名称名称含义含义abs绝对值函数(求字符的绝对值函数(求字符的ASCII码)
12、码)conj复数共轭复数共轭imag复数虚部复数虚部real复数实部复数实部.例:例:矩阵:矩阵:a=1 2;3 4 b=5 6;7 8 c=2,d=a+b,e=a-b,b*2,a2,a .例:例:a=pi pi/2 0 ;b=0,1 b1=sin(a)exp(b),exp(1),log(exp(1),log(2.7182)pow2(3).向向 方向取整方向取整ceil四舍五入(无论正负)四舍五入(无论正负)round符号函数符号函数求余求余 rem(x,y):x-n.*y,n=fix(x/y)求余求余 mod(x,y):x-n.*y,n=floor(x/y)向向 方向取整方向取整向方向取整向
13、方向取整含义含义signremmodfloorfix 名称名称取整和求余函数取整和求余函数.例:例:floor(2/3)round(2/3)floor(1./1 2 3)ceil(1/2)fix(1/3)floor(-1/3)mod(-2,-3)mod(2,-3)rem(2,-3).运算操作符运算操作符符号符号(矩阵矩阵)含义含义符号符号(数组数组)含义含义+加法加法+加法加法-减法减法-减法减法*乘法乘法.*乘法乘法/右除法右除法./右除法右除法左除法左除法.左除法左除法乘方乘方.乘方乘方转置转置.转置转置2.1.2 Matlab的数学运算符的数学运算符.A的元素乘方的元素乘方的元素右的元素
14、右(左左)除除B的对应元素的对应元素标量标量s与数组每个与数组每个元素相乘元素相乘数组乘法数组乘法数组加法数组加法(减法减法)右右(左左)除除标量标量s与矩阵每个与矩阵每个元素相乘元素相乘内维相同矩阵乘法内维相同矩阵乘法矩阵加法(减法)矩阵加法(减法)A.sAs./(.)/(AB)S.*A(s*A)s*A.*A+B(A-B)A+B(A-B)数组运算数组运算矩阵运算矩阵运算乘方乘方矩阵和数组运算对比表如下:矩阵和数组运算对比表如下:.标量标量s分别与分别与B元素之和元素之和(差)差)s+B (B-s)转置转置A.转置转置(复数共轭转置复数共轭转置)A数组运算数组运算矩阵运算矩阵运算对的各元素对的
15、各元素求平方根求平方根Sqrt(A).当当A是非奇异的是非奇异的n阶方阵阶方阵 X=AB 是方程是方程 A*X=B的解的解,即:即:AB=*B X=B/A 是方程是方程 X*A=B的解的解,即:即:B/A=B*其中其中:是矩阵的逆,也可用是矩阵的逆,也可用inv(A)求。求。1A1A1A 当当A的行大于列时的行大于列时AB仍然合法,得到的是最小二仍然合法,得到的是最小二乘解。即乘解。即:X=inv(A*A)*(A*B).例:例:数组:数组:a=1 2;3 4 b=5 6;7 8,c=2 d=a+b,a+2,b.*2,a.2,a.a.*b,sqrt(a)exp(a).2.1.4 标点符号的使用标
16、点符号的使用标点符号标点符号定义定义标点符号标点符号定义定义分号分号 ;数组行分隔符;取数组行分隔符;取消运行显示消运行显示省略号省略号 续行符续行符逗号逗号 ,数组列分隔符;函数组列分隔符;函数参数分隔符数参数分隔符引号引号 定义字符串定义字符串冒号冒号 :在数组中应用较多在数组中应用较多,如生成等差数列如生成等差数列等号等号 =赋值语句赋值语句圆括号圆括号()()指定运算优先级;指定运算优先级;函数参数调用;函数参数调用;百分号百分号%注释语句的标识注释语句的标识方括号方括号 定义矩阵定义矩阵.指令窗中常用操作键指令窗中常用操作键键名键名作作 用用()向前向前(后后)调回已输入过的指令行调
17、回已输入过的指令行()当前行中左当前行中左(右右)移光标移光标Page up向前翻阅当前窗中的内容向前翻阅当前窗中的内容Pagedown向后翻阅当前窗中的内容向后翻阅当前窗中的内容Home使光标移到当前行的首端使光标移到当前行的首端End 使光标移到当前行的尾端使光标移到当前行的尾端Esc清除当前行的全部内容清除当前行的全部内容backspace删去光标左边的字符删去光标左边的字符Delete删去光标右边的字符删去光标右边的字符2.2 常用的操作命令和快捷键常用的操作命令和快捷键.常见的操作指令常见的操作指令键名键名 作作 用用clf清除图形窗清除图形窗clc清除指令窗中显示内容清除指令窗中显
18、示内容clear清除工作空间中保存的变量清除工作空间中保存的变量edit打开打开M文件编辑器文件编辑器type显示指定显示指定M文件的内容文件的内容version(ver)给出当前给出当前Matlab的版本号的版本号(详细信息详细信息)whos(who)列出工作空间中的变量的详细信息列出工作空间中的变量的详细信息save(load)保存变量(启用变量)保存变量(启用变量).关系运算和逻辑运算关系运算和逻辑运算 在程序流控制和逻辑推理中,需要对一类是非在程序流控制和逻辑推理中,需要对一类是非问题作出问题作出“是真,是假是真,是假”的回答。所以设计了关系和的回答。所以设计了关系和逻辑操作和一些相关
19、函数。逻辑操作和一些相关函数。.Matlab的规定:的规定:(1)关系和逻辑表达式中,任何非关系和逻辑表达式中,任何非0数都被看作数都被看作是是“逻辑真逻辑真”,而,而0被认为是被认为是“逻辑假逻辑假”。(2)关系和逻辑表达式的计算结果,是由关系和逻辑表达式的计算结果,是由0和和1组组成的成的“逻辑数组逻辑数组”。(3)逻辑数组是一种特殊的数值数组。与逻辑数组是一种特殊的数值数组。与“数值数值类类”有关的操作和函数对它也同样适用有关的操作和函数对它也同样适用;.2.4.2.1 关系运算关系运算Matlab的关系操作符主要有:的关系操作符主要有:指令指令含义含义指令指令含义含义=大于等于大于等于
20、大于大于=不等于不等于.说明说明 1 1 标量与数组进行比较,比较在标量与数组每标量与数组进行比较,比较在标量与数组每个元素之间进行,因此比较结果将与被比数组同维。个元素之间进行,因此比较结果将与被比数组同维。2 2 数组与数组进行比较,两数组必须维数相同,数组与数组进行比较,两数组必须维数相同,比较在两数组相同位置上的元素间进行,因此比较比较在两数组相同位置上的元素间进行,因此比较结果将与被比数组同维。结果将与被比数组同维。.例例5:a=1 3;7 8 b=2;c1=(a=b)c2=a(a=b)d=6 5;2 3 e=ad 维数不同时的反例维数不同时的反例 f=1 7 2;4 5 6 m=a
21、5)c=a3&a3)&(a7)d=a6 (d=(a6).Matlab的逻辑函数的逻辑函数指令指令含义含义 all(a)测试矩阵所有元素是否非零。测试矩阵所有元素是否非零。(当向量(当向量a的元素全非的元素全非0时,结果是时,结果是1;否则否则为为0,矩阵针对每一列),矩阵针对每一列)any(a)测试任意非零值。测试任意非零值。(只要(只要a中有非中有非0元素,结果就是元素,结果就是1;否则结否则结果是果是0)find查找非零元素的值和下标查找非零元素的值和下标logical将数值转变成逻辑值将数值转变成逻辑值.例例7:a=1 2 0 4 b=all(a)a=1 2;3 4 c=all(a)(向
22、量和矩阵)向量和矩阵)d=any(a)e=1 4;6 0 f=find(e)f,v=find(e)f,v,w=find(e)r=logical(e).特殊数据判断指令特殊数据判断指令指令指令含义含义isempty(a)当当a是空矩阵时,结果为是空矩阵时,结果为1,否则为,否则为0.isfinite(a)对应对应a中有限值的元素位置,结果为中有限值的元素位置,结果为1,对应元素为无穷或对应元素为无穷或nan(不定值不定值)时,结时,结果为果为0.isinf(a)对应对应a中的元素为无穷时,结果为中的元素为无穷时,结果为1,否则为否则为0.isletter(a)当当a中的元素为字母,与之相对应的位
23、中的元素为字母,与之相对应的位置结果为置结果为1,否则为,否则为0.isnan(a)对应对应a中中nan元素的位置结果元素的位置结果为为1,其它位置为,其它位置为0.isprime(a)对应对应a中素数元素的位置结果中素数元素的位置结果为为1,其它位置为,其它位置为0.isreal(a)当当a中的所有元素为实数时,中的所有元素为实数时,结果为结果为1,否则为,否则为0.isspace(a)对应对应a a中有空格的位置结果为中有空格的位置结果为1,1,否则为否则为0.0.例例8:a=isempty(a)a1=1/0 0/0;0 5 b=isfinite(a1)a3=it is 12 c=isle
24、tter(a3)a4=1:9 d=isprime(a4).思考题:将矩阵思考题:将矩阵 中的中的nan都变成都变成0580/0nana=nan 5;8 0/0z=isnan(a);y=find(z);a(y)=0.数据类型判断指令数据类型判断指令指令指令含义含义isa(a,name)假如假如a 是是name指定的数据类型,结果指定的数据类型,结果为为1,否则为否则为0iscell(a)如果如果a是元胞,则结果为是元胞,则结果为1,否则结果为,否则结果为0.ischar(a)如果如果a是字符串,结果为是字符串,结果为1,否则为,否则为0.isnumeric(a)如果如果a是数值,结果为是数值,结果为1,否则为,否则为0.islogical(a)如果如果a a是逻辑数,结果为是逻辑数,结果为1,1,否则为否则为0.0.例例9:isa(it,char)或者或者 isa(it,double)iscell(2)ischar(it)或者或者ischar(12)isnumeric(ddd)或者或者 isnumeric(123)a=10:-1:6 b=logical(a)c=islogical(b)a=36 或者或者 a=3=3 c=islogical(a).