第2章 MATLAB基本运算
2.1 数据类型 MATLAB7.3定义了15种基本的数据类型,包括整型、浮点型、字符型和逻辑型等,它们按数组形式进行存储和运算。 在默认情况下,系统将所有数值都按双精度浮点数类型来存储和操作,如果用户要节省存储空间,可以使用不同的数据类型。 2.1.1 常数和变量 1.常数:10进制表示,范围
2.变量 (1)命令规则:必须以字母开头,其后可以是字母、数字或下划线;其长不超过63个字符;变量名字母区分大小写;关键字不能作为变量名。 (2)特殊变量(p18) ans---运算结果默认变量名 pi---3.1415926 i或j---虚数单位 eps---2.2204*e-16 nargin(nargout)函数 inf或INF---无穷大 输入(输出)变量数目 NaN或nan---不定值 realmin(realmax)最小 (最大)可用正实数
2.1.2 整数和浮点数 1、整数 共8种内置整数类型。如无符号8位整数(0---255),类型转换函数为uint8. 2、浮点数 双精度为系统默认的数据类型。 单精度型,存储4字节,范围:-3.40282e38---+3.40282e38,类型转换函数为single;双精度型,存储8字节,范围:-1.79769e308---+1.79769e308,类型转换函数为double;
2.1.3 复数 z=a+bi z=r*exp(i*theta),其中相角theta以弧度为单位,复数z的实部a=r*cos(theta),虚部b=r*sin(theta). 表2-1 复数的运算函数 函数名称 函数功能 函数名称 函数功能 angle(x) real(x) 求复数x的实部 求复数x的相角 conj(x) Image(x) 求复数x的共轭复数 求复数x的虚部 abs(x) complex(a,b) 以a,b分别作为实部和虚部 创建复数 求复数x的模
2.2 矩阵的数组运算 2.2.1 矩阵的输入 1.直接输入 矩阵元素用方括号”[]”括住;行内的元素间用逗号”,”或空格隔开;行与行之间用分号”;”或回车隔开,元素可以使用数值或表达式. 例2-1 用直接输入法创建矩阵 解:A=[1 2 3;4 15 60;7 8 9]
2.用矩阵编辑器输入 适用维数较大的矩阵,在命令窗口创建变量A,在工作空间双击它打开编辑器,修改其中的元素. 3.用矩阵函数来生成矩阵 1)生成对角矩阵 i)A=diag(v,k),生成对角线方向上的第k层元素是向量v的矩阵.当k=0,表示矩阵的主对角线;当>0时它表示主对角线的平行位置上方和第k层;当<0时它表示主对角线的平行位置下方和第|k|层.
ii)v=diag(A,k),提取矩阵A中主对角线上的第k层元素,得到向量v. 2)魔方矩阵(矩阵中每行、每列及两条对角线上的元素之和都相等):magic(n)生成n阶魔方矩阵,n>2的整数。 3)随机矩阵:rand(m,n)随机生成均匀分布的m*n阶矩阵,其元素值为0---1之间。
常用的矩阵函数 zeros(m,n)---m*n的零矩阵。 eye(n)---n阶单位矩阵。 ones(m,n)---m*n的元素全为1的矩阵。 fliplr(A)---将矩阵A左右翻转。 flipud(A)---将矩阵A上下翻转。 hilb(n)---n阶Hilbert矩阵。 invhilb(n)---n阶反Hilbert矩阵。 pascal(n)---n阶Pascal矩阵。 tril(A,k)---下三角矩阵, triu(A,k)---上三角矩阵
例2-2 利用函数生成矩阵 解:MATLAB命令为: v=[1 2 3] A=diag(v,0) B=diag(v,1)
例2-3 (1)生成一个三阶魔方矩阵A;(2)生成一个4阶单位矩阵B. 解:MATLAB命令为: A=magic(3) B=eye(4) 例2-4 输入矩阵 解:MATLAB命令为: A=ones(3)
例2-5 随机生成含有5个元素的行向量. 解:MATLAB命令为: rand(1,5) 解:MATLAB命令为: 例2-6 随机生成数值在10---30之间的含有10个元素的行向量.[10,30] 解:MATLAB命令为: 10+(30-10)*rand(1,5)
例2-7 生成三对角矩阵 解:MATLAB命令为: a1=ones(1,6) a2=2*ones(1,5) a3=[1 2 3 1 2] A=diag(a1,0)+diag(a2,1)+diag(a3,-1)
4.通过文件生成 1)直接把数据作为矩阵输入到M文件中;2)作为变量保存到MAT文件中. 5.数组的生成 1)使用from:step:to创建数组,当step省略时,代表step=1;当step为负数时,可以创建降序数组. 例2-9使用from:step:to创建数组 解:a=-1:0.5:2 b=3:-0.4:-2
2)使用linspace和logspace生成数组. linspace(a,b,n)生成a到b之间线性分布的n个元素的数组,如果n省略,则n=100. 如linspace(1,5,10) logspace(a,b,n)生成10a到10b之间按对数分布的n个元素的数组,如果n省略,则n=50 2.2.2 矩阵和数组的算术运算 又称为点运算,其加 、减、乘、除和乘方运算都是 对两个尺寸相同的矩阵和数组进行元素对元素的运算。
设数组为α=[a1,a2,…,an],β=[b1,b2,…,bn], 则对应的运算为
例2-10 数组运算. 解: a=1:5 b=3:2:11 a.^2 a.*b 例2-11 计算sin(kπ/2)(k=±2, ±1,0)的值. x=-pi:pi/2:pi; y=sin(x)
sin(x) 正弦函数sinx asin(x) 反正弦函数arcsinx cos(x) 余弦函数cosx acos(x) 表2-2 常用函数命令 函数名称 函数功能 sin(x) 正弦函数sinx asin(x) 反正弦函数arcsinx cos(x) 余弦函数cosx acos(x) 反余弦函数arccosx tan(x) 正切函数tanx atan(x) 反正切函数arctanx cot(x) 余切函数cotx acot(x) 反余切函数arccotx sec(x) 正割函数secx asec(x) 反正割函数arcsecx csc(x) 余割函数cscx acsc(x) 反余割函数arccscx exp(x) 自然指数ex log(x) 自然对数lnx abs(x) 绝对值|x| log2(x) 以2为底的对数log2x sqrt(x) 算术平方根 log10(x) 以10为底的对数log10x
2.2.3 关系运算和逻辑运算 关系运算符:<、<=、 > 、 >= 、==(等于)、~=(不等于)。 逻辑运算符:&(与)、|(或)、~(非)、xor (异或)。 它们的结果是逻辑值1(true)或0(false)。 运算规律同其它高级语言。
例2-12 已知矩阵 对它们作简单的关系与逻辑运算。 解: A=[1 2;1 2]; B=[1 1;2 2]; C=(A<B)&(A==B)
2.3 字符串 1、字符串的输入 1)直接赋值:用单引号’括起来直接赋给变量.如s1=‘MATLAB 7’,s2=‘字符串’,s3=‘显示’’MATLAB’’’. 2)多个字符串组合 i)用”,”连成长字符串.str1=[s1,’ ‘,s2]
ii)用”;”构成m*n的字符串矩阵,每行字符串元素的长度可以不同,但每行字符的总数必须相同. str2=[s1,’ ‘;s2,’ ‘;s3] 2.字符串常用操作 例2-13 使用字符串函数运算 解: str=‘a+b,c+d,’ n=findstr(str,’,’) str1=str(1:n(1)) str2=str(n(1)+1:n(2))
str3=strrep(str1,’,’,’*2’) a=5 b=2 eval(str1) str2=upper(str2)
练习: ,计算A*B, A.*B并比较。 1、矩阵 2、已知矩阵 做简单的关系运算A>B,A==B, A<B, 并做逻辑运算(A==B)&(A<B), (A==B)&(A>B)