第2章 MATLAB基本运算
第二讲 MATLAB基本运算

矩阵下标的用途
访问超出矩阵范围时,产生 Index exceeds matrix dimentions 存储超出矩阵范围时,矩阵自动调节 大小,将指定位置元素置入,其他没 指定数的位置默认为零。
2010-12-25
21
矩阵下标的用途
(2)矩阵连接 例:a=[1 2;3 4] b=[a a+5; a-5 zeros(size(a)] 将小矩阵嵌套入大矩阵,实现矩阵连接。
将矩阵按创建原则写入一个M文件, 在MATLAB的命令窗口或程序中直接执 行该M文件,即将矩阵调入工组空间。
2010-12-25
15
利用MATLAB函数创建矩阵 利用MATLAB函数创建矩阵 MATLAB
ones( m, n) - m行n列的1阵产生 zeros(m, n) -产生m行n列的全0阵 rand(m, n) -产生m行n列均匀分布全列的在 [0,1]区间的随机阵 randn(m, n) -产生m行n列的正态分布矩阵 eye(n) -产生n维单位阵
2010-12-25 18
2.2.3 矩阵的下标 .2.3
子矩阵提取A(v1, v2)
v1表示子矩阵包含的行标构成的向量 v2表示子矩阵包含的列标构成的向量 B1=A(:, [1, 3]) 为:时表示要提取所有行(列) B2=A(1:2:end, :) end表示最后一行(列) B3=A([3,2,1],[2,3,4]) 例: B4=A(:, end:-1:1) 提取A矩阵所有行、1,3列 提取A矩阵 3,2,1 行、2,3,4 列构成子矩阵 提取A矩阵全部奇数行,所有列 将A矩阵左右翻转
2010-12-25
13
直接输入法创建矩阵
例:创建矩阵
第2章--MATLAB数据及其运算-习题答案教学内容

第2章--M A T L A B数据及其运算-习题答案第2章 MATLAB数据及其运算习题2一、选择题1.下列可作为MATLAB合法变量名的是()。
D A.合计 B.123 C.@h D.xyz_2a 2.下列数值数据表示中错误的是()。
CA.+10 B.1.2e-5 C.2e D.2i3.使用语句t=0:7生成的是()个元素的向量。
A A.8 B.7 C.6 D.54.执行语句A=[1,2,3;4,5,6]后,A(3)的值是()。
B A.1 B.2 C.3 D.45.已知a为3×3矩阵,则a(:,end)是指()。
D A.所有元素 B.第一行元素C.第三行元素 D.第三列元素6.已知a为3×3矩阵,则运行a (1)=[]后()。
A A.a变成行向量 B.a变为2行2列C.a变为3行2列 D.a变为2行3列7.在命令行窗口输入下列命令后,x的值是()。
B >> clear>> x=i*jA.不确定 B.-1 C.1 D.i*j 8.fix(354/100)+mod(354,10)*10的值是()。
D A.34 B.354 C.453 D.439.下列语句中错误的是()。
BA.x==y==3 B.x=y=3C.x=y==3 D.y=3,x=y10.find(1:2:20>15)的结果是()。
CA.19 20 B.17 19C.9 10 D.8 911.输入字符串时,要用()将字符括起来。
C A.[ ] B.{ } C.' ' D." " 12.已知s='显示"hello"',则s的元素个数是()。
A A.9 B.11 C.7 D.1813.eval('sqrt(4)+2')的值是()。
BA.sqrt(4)+2 B.4 C.2 D.2, 214.有3×4的结构矩阵student,每个结构有name(姓名)、scores(分数)两个成员,其中scores是以1×5矩阵表示的5门课的成绩,那么要删除第4个学生的第2门课成绩,应采用的正确命令是()。
MATLAB基础教程第2章

第二章 数组、矩阵及其运算
2.1 数组的创建和寻访
例2-2 一维数组的生成与访问
命令:X=rand(1,5) 命令:X(3) 命令:X([1 2 5]) 命令:X(1:3) 命令:X(3:end) 命令:X(3:-1:1) 命令:X(find(X>0.5)) 命令:X([1 2 3 4 4 3 2 1])
第二章 数组、矩阵及其运算
2.2 矩阵的运算
例2-6 矩阵的乘法(接着上面的例子) A*B 3*A
注意:矩阵相乘时要求A的列数等于B的行数
第二章 数组、矩阵及其运算
2.2 矩阵的运算
A/B(矩阵右除)表示的是方程X*B=A的解 A\B(矩阵左除)表示的是方程A*X=B的解
例2-7 矩阵的除法( 见教材P.23)
第二章 数组、矩阵及其运算
2.3 数组的运算
1、数组的基本运算
例2-8 ( 见教材P.25)
第二章 数组、矩阵及其运算
2.3 数组的运算
数组运算和矩阵运算指令对照表
数组运算 指令 A.’ A=s A+s,A-s s.*A s./A,A.\s A.^n A+B,A-B A.*B A./B B.\A 含义 非共轭转置,相当于conj(A’) 把标量s赋给A中每个元素 标量s分别于A的元素之和(差) 标量s分别于A的元素之积 S分别被A的元素除 A的每个元素自乘n次 对应元素相加(减) 对应元素相加(乘) A的元素被B的对应元素相除 (与上相同) A^n A+B,A-B A*B A /B B\A 方阵A自乘n次 矩阵和(差) 同内维矩阵相乘 A右除B A左除B S*A 标量s分别于A的元素之积 A’ 指令 共轭转置 矩阵运算 含义
第二章 数组、矩阵及其运算
第2章 MATLAB数据及其运算.

8 1 d 3 5
(2)利用空矩阵删除矩阵的元素 a=[ ] a的维数为0。 例:a( 2 , : )= [ ]; 8 1 6 得: 3 5 7 a a= 4 9 2 8 1 6 4 9 2
2.3.5
复数(Com part)和虚部(imaginary part)组 成。 虚数单位用i或j来表示。 6+5i = 6+5j
format bank format rat
2.3 MATLAB矩阵的表示
2.3.1 矩阵 MATLAB中最基本的数据结构是矩阵(matrix)。 1*1的矩阵----标量(scalar): [5] 只有一行或一列的矩阵-----向量(vector): [1 3 5 7]
2 4 6 8
2.4 Matlab数据的运算(Operators ) 运算符(Operators )
+ Addition
*
Subtraction
Multiplication
/
\
Division
Left division
^
Power
2.4.1 算术运算 (1)矩阵加减运算: 两个同维矩阵,才能进行加减运算,对应无素相加减。 一个标量与矩阵相加减时,结果为这个标量与矩阵的 每一个元素相加减。 x=[2,-1,0;3 2 -4]; y=ones(2,3); x-y=? [1,-2,-1;2,1,-5] x+1=? [3,0,1;4,3,-3]
在线性代数中,本没有矩阵除法,它是由逆 矩阵引申来的。 MATLAB中,矩阵求逆(Matrix inverse)的函 数为: Y = inv(X) 方程A*X=B的解为:X=inv(A)*B=A\B, A\B称为A左除B,左除时要求两矩阵行数相等。 方程X*A=B的解为:X=B*inv(A)=B/A, A/B称为A右除B,右除时要求两矩阵列数相等。
第2章 MATLAB基本操作

6. 逻辑操作符 功能: 功能:逻辑操作运算。 格式: 格式:A&B A|B ~A 注意逻辑操作有相应的M文件 文件: 注意逻辑操作有相应的 文件:A&B等效 等效 ),A|B等效于 等效于or(A,B), 于and(A,B), ( , ), 等效于 , , ~A等效为 等效为not(A)。 等效为 。
2.关系操作符 关系操作符 关系运算符包括: 关系运算符包括:< 、< = 、〉、> = 、= = 、 ~= 3.测试用的逻辑函数 测试用的逻辑函数 1)all函数测定矩阵中是否全为非零元素 2)any函数测试出矩阵中是否有非零值 3) find函数可找出矩阵中的非零元素及其下 标 4) exist函数在装入数据之前对数据文件作 检测
利用取整和求余函数,可得到整数或精确到小数点后的第 几位。例如: x1=10-round(20*rand(2,5)) %产生[-10 10]之间的随机数(取整) x1 = -4 4 -1 -4 7 -7 -2 0
2 −7
x2=10-round(2000*rand(2,5))/100 %产生[−10 10]之间的随机 数(精确到0.01) x2 = -8.0000 -2.9000 -3.2000 -6.4300 -6.3600 3.1600 4.2100 -0.6800 3.1800 -4.5400
5.函数 函数 内部函数、工具箱函数、自定义函数。 1)函数的嵌套 x=sqrt(log(z)) 函数的嵌套 2)多输入函数 theta=atan2(y,x) 多输入函数 3)多输出函数 [v,d] = eig(a) 多输出函数 [y,I] = max(x) 6.表达式 表达式 a=(1+sqrt(10))/2 b=abs(3+5i) c=sin(exp(-2.3))
MATLAB编程及应用 李辉 PPT课件 第2章 MATLAB基本计算和基础知识

2.2.2 系统预定义变量
MATLAB系统提供了一些用户不能清除的特殊变量,
即系统预定义变量。
MATALB系统预定义变量及其含义
预定义变量名
含义
ans pi eps nan或NAN inf i或j
运算结果默认变量名 圆周率 浮点数的精度,也是系统运算时确定的极小值 非数,如0/0 无穷大,如1/0 虚数标志,i=j=sqrt(-1)
1.0000 + 2.0000i >> b=3+4*j b=
3.0000 + 4.0000i
2.3.2 逻辑类型
MATLAB本身并没有专门提供逻辑类型,而借用整型来描
述逻辑类型数据。MATLAB规定,逻辑数据真(true)为1、
逻辑数据假(false)为0。
>> 2<3 ans =
logical 1 >> 2>3 ans = logical 0
>> sin(pi/3) ans =
0.8660
➢ 复数的计算:MATLAB还具有超越计算器的功能, 它认识复数,能够进行复数的计算。
>> (2+3i)+(4+5i) ans =
6.0000 + 8.0000i
Байду номын сангаас
2.2 变量
变量是指在程序执行过程中其值可以变化的量。
变量
用户自定义变量 系统预定义变量
2.3 数据类型
MATLAB数据类型
数值类型 逻辑类型 字符串类型 单元类型 结构类型
2.3.1 数值类型
数值类型分类方法
根据数据存 储空间和方 式分类
根据数据结 构分类
第2章_MATLAB的基本操作

浮点数包括单精度(4个字节)和双精度(8个字 节),默认为双精度。
single :将其它类型的数据转换成单精度浮点数。 double :将其它类型的数据转换成双精度浮点数。
浮点数与其它类型数据运算表
operand single double int/uint char logical X single single single single single double single double int/uint double double
MATLAB数据类型
例:
MATLAB数据类型
细胞变量的定义
可以通过以下两种方式定义一个细胞变量:
用赋值语句直接定义; 由 cell 函数预先分配存储空间,然后对细
胞的每个元素逐个赋值。
MATLAB数据类型
MATLAB数据类型
细胞变量可以嵌套定义
MATLAB数据类型
细胞变量的元素的引用
MATLAB数据类型
str2num:将字符数组转换为
数值数组
abs,double,char按照 ASCII码 转换; num2str,int2str,mat2str,str2num 直接转换。
MATLAB数据类型
字符串的连接
水平连接:strcat 或 中括号中用逗号连接
在中括号中直接水平连 接,结果中包括原字符 串结尾处的空格。 用 strcat 连接,结果 中忽略原字符串结尾处 的空格。
把数字直接转换为字符 串,每个数字为一个独 立的字符串。
把数字取整后转换为字 符串,注意和 num2str 的区别。
把矩阵转换为一个字符 串,方括号、分号和空 格都是其元素。
MATLAB数据类型
第2章 MATLAB赋值、矩阵及其运算

精选ppt课件
11
3.通过语句等生成矩阵
(1)利用冒号表达式建立一个向量 冒号表达式可以产生一个行向量,一般
格式是: from:step:to 其中from为初始值,step为步长,to为终止 值。
注:(1)step省略时则默认为1。
(2)step>0且from>to时为空矩阵。
(3)step<0且from<to时为空矩阵。
ans = 4
精选ppt课件
20
如 >> B(:,3) ans =
9 10 11 12
>> B(2,:) ans =
2 6 10 14
精选ppt课件
21
(2) 利用空矩阵删除矩阵的元素 在MATLAB中,定义[]为空矩阵。给变
量X赋空矩阵的语句为X=[]。注意,X=[]与 clear X不同,clear是将X从工作空间中删除 X ,而空矩阵则存在于工作空间中,只是 维数为0。
精选ppt课件
23
如 >> h=ones(2,3) h=
111 111 >> g=eye(3) g= 100 010 001
精选ppt课件
24
例2-3 分别建立3×3、3×2和与矩阵A同样大小的零 矩阵。 (1) 建立一个3×3零矩阵。
zeros(3) (2) 建立一个3×2零矩阵。
zeros(3,2) (3) 设A为2×3矩阵,则可以用zeros(size(A))建立 一个与矩阵A同样大小零矩阵。 A=[1 2 3;4 5 6]; %产生一个2×3阶矩阵A zeros(size(A)) %产生一个与矩阵A同样大小的 零矩阵
精选ppt课件
26
第2章 MATLAB数值计算

第2章 MATLAB数值计算MATLAB的数学计算=数值计算+符号计算其中符号计算是指使用未定义的符号变量进行运算,而数值计算不允许使用未定义的变量。
2.1 变量和数据2.1.1数据类型数据类型包括:数值型、字符串型、元胞型、结构型等数值型=双精度型、单精度型和整数类整数类=无符号类(uint8、uint16、uint32、uint64)和符号类整数(int8、int16、int32、int64)。
2.1.2数据1. 数据的表达方式▪可以用带小数点的形式直接表示▪用科学计数法▪数值的表示范围是10-309~10309。
以下都是合法的数据表示:-2、5.67、2.56e-56(表示2.56×10-56)、4.68e204(表示4.68×10204)2. 矩阵和数组的概念在MATLAB的运算中,经常要使用标量、向量、矩阵和数组,这几个名称的定义如下:▪标量:是指1×1的矩阵,即为只含一个数的矩阵。
▪向量:是指1×n或n×1的矩阵,即只有一行或者一列的矩阵。
▪矩阵:是一个矩形的数组,即二维数组,其中向量和标量都是矩阵的特例,0×0矩阵为空矩阵([])。
▪数组:是指n维的数组,为矩阵的延伸,其中矩阵和向量都是数组的特例。
3. 复数复数由实部和虚部组成,MATLAB用特殊变量“i”和“j”表示虚数的单位。
复数运算不需要特殊处理,可以直接进行。
复数可以有几种表示:z=a+b*i或z=a+b*jz=a+bi 或z=a+bj(当b 为标量时) z=r*exp(i*theta)● 得出一个复数的实部、虚部、幅值和相角。
a=real(z) %计算实部 b=imag(z) %计算虚部 r=abs(z) %计算幅值 theta=angle(z) %计算相角 说明:复数z 的实部a=r*cos(θ); 复数z 的虚部b=r*sin(θ); 复数z 的幅值22b a r +=;复数z 的相角theta=arctg(b/a),以弧度为单位。
02第二章MATLAB语言的数值运算

③ eye生成单位距阵
A=eye (n) 生成n×n单位矩阵。
A=eye (m,n)或者A=eye ([m,n]) 生成m×n的单位矩阵。 B=eye (size(A)) 生成和矩阵A大小相等的单位矩阵。
④ rand生成均匀分布的随机矩阵
A=rand (n) 生成n×n随机矩阵。 A=rand (m,n)或者A=rand ([m,n]) 生成m×n的随机矩阵。 A=rand (m,n,p,…)或者A=rand ([m n p …]) 生成m×n×p×…的随机矩阵。 B=rand (size(A)) 生成和矩阵A大小相等的随机矩阵。
2014-6-20 17
2.1.3 矩阵的运算
3、矩阵的乘方,A是一个方阵,P是正整
数,则A^P表示A自乘P次 4、矩阵的转置A’,I行j列与j行I列元素互 换 5、求逆矩阵,用函数A-1=inv(A) 6、求特征值,用函数eig(A) 7、求特征多项式,用函数poly() 8、求方阵的行列式,用函数det()
2014-6-20
27
2.1.6 矩阵函数
函 数
det diag eig inv
功 能
计算矩阵所对应的行列式的值 抽取矩阵对角线元素 求特征值和特征向量 求矩阵的逆阵
lu
Poly Rank Svd
2014-6-20
三角分解
求特征多项式 求矩阵的秩 奇异值分解
28
1.求矩阵的行列式的值
>> X=[1 2 3 0; 5 6 0 8; 9 0 11 12; 0 14 15 16]; >>det(X) ans = -5464
18
2014-6-20
基本矩阵运算
第二章 MATLAB基础知识

2.2 数组及其运算
例 ascii_a=double(a) %将字符转换为相应的双精度值 ascii_a = Columns 1 through 13 84 104 105 115 32 105 115 32 97 110 32 101 120 Columns 14 through 19 97 109 112 108 101 46 例 char(ascii_a) %将双精度值转换为字符 ans = This is an example. 例 w=find(a>=‘a’&a<=‘z’); %查找所有小写字母的位置 ascii_a(w)=ascii_a(w)-32; %将小写字母ascii值转换为大写 char(ascii_a) %将双精度值转换为字符 ans = THIS IS AN EXAMPLE.
2.2 数组及其运算
2.2.2 数组的运算
运算 加 运算符 + 表达式 a+b
减 乘 除 幂 点乘 点除 点幂
*
/或\ ^ .* ./或.\ .^
a-b a*b
a/b或a\b a^b a .* b a ./ b或a.\b a.^b
2.2 数组及其运算
例 a=3 14 7 1 4 9 3 6 10 b=2 8 3 2 10 0 11 2 7 a+b ans= 5 22 10 3 14 9 14 8 17
2.2 数组及其运算
高维数组的创建
直接通过“全下标”元素赋值方式创建高维数组; 由若干个同样大小的低维数组组合成高维数组; 由函数ones、zeros、rand、randn直接创建标准
高维数组;
借助cat、repmat、reshape等函数构造高维数组。
Am
Matlab程序设计第2章矩阵及其运算

2.2.2 创建二维数组 方法2:用函数生成特殊矩阵
函数 zeros (全零阵) 格式 B = zeros(n) B = zeros(m,n) 函数 ones (全1阵) 格式 B = ones(n) B = ones(m,n) 函数 eye(单位矩阵) 格式 B = eye(n) B = eye(m,n) %生成n×n全零阵 %生成m×n全零阵
2.2.4二维数组的寻访与赋值
判断数组维数和大小 1) 判断数组维数的指令:ndims 2) 判断数组大小的指令:size 例如:上例中数组A的维数和大小分别为
>> An=ndims(A), As=size(A) An = 2 As = 3 3
表示数组A大小的行数组的长度 (As的长度) 等于数组A的 维数 (An),length(As)=An 数组A的长度指最长维的长度:length(A)=max(As)。
注意: 1) 子数组寻访取决于 x ( index )中的下标index。 2) 下标 index 可以是单个数值或数组,但是 index 的元素取 值必须在 [ 1 , end ] 的范围内。end 为数组最大下标。 3) 子数组赋值时,注意被赋值的子数组长度与送入的数组长 度一致。
2.2.4二维数组的寻访与赋值
%生成n×n全1阵 %生成m×n全1阵 %生成n×n单位阵 %生成m×n单位阵
2.2.2 创建二维数组 方法2:用函数生成特殊矩阵
函数 randn 格式 y = randn(n) y = randn(m,n) %生成n×n正态分布随机矩阵 %生成m×n正态分布随机矩阵
产生均值为0.6,方差为0.1的4阶矩阵 >> mu=0.6; sigma=0.1; >> x=mu+sqrt(sigma)*randn(4) x= 0.8311 0.7799 0.1335 1.0565 0.7827 0.5192 0.5260 0.4890 0.6127 0.4806 0.6375 0.7971 0.8141 0.5064 0.6996 0.8527
第2章 MATLAB矩阵及其运算

1 4 7 1 4 7
3 5 6 8 9 11 2 3 5 6 8 9
2.2.2 矩阵的拆分
1.矩阵元素的引用方式
1)通过下标引用矩阵的元素,例如
A=[1,2,3;4,5,6;7,8,9] A(3,2)=200 注意 :如果给出的下标大于矩阵的行数和列数,则 自动扩展原有矩阵,没赋值的元素为0。
元素由1,2,3,…,n2共n2个整数组成。MATLAB提供
了求魔方矩阵的函数magic(n),其功能是生成一个 n阶魔方阵。 (2) 范得蒙矩阵 (3) 希尔伯特矩阵 (4) 托普利兹矩阵 (5) 伴随矩阵
(6) 帕斯卡矩阵
练习
1.利用clear命令清除工作空间的变量(若工作 空间没有变量,可先任意新建一个); 2.按下列方式对变量赋值 A=[pi,2*pi;4*pi,0;10*pi,0.5*pi]; B=[1+2i,3-5i,5;4,6-2i,8;7,9+3i,11]; 3.求出2题中A的正弦函数并赋给变量C,求出 2题中B的实部和虚部分别赋给变量Br和Bi。 4.将3题中的变量C, Br和Bi保存下来,保存 数据的文件名自己选取(英文名)
1.变量命名
可以改变, 重新赋值
在MATLAB 中,变量名是以字母开头,后接字母、
数字或下划线的字符序列(不能包含空格和标点
符号),最多63个字符。在MATLAB中,变量名 区分字母的大小写。关键字和函数名不能作为变 量名。
2.赋值语句 (1) 变量=表达式 (2) 表达式
其中表达式是用运算符将有关运算量连接起来的
e或E表示 10为底的 指数
e3,2e3, 1e, 1e-2, 1E2, 1E-2i, 2E-1-i, .....
第02章_MATLAB数据及其运算_参考解答

第2章 MATLAB数据及其运算教材P37习题二1. 如何理解“矩阵是MATLAB最基本的数据对象”?答:MATLAB的数据类型有:数值型、字符型、结构体、单元、多维矩阵、稀疏矩阵等。
以上各种数据类型都以矩阵形式存在,所以矩阵是MATLAB最基本的数据对象。
2. 设A和B是两个同维同大小的矩阵,问:(1) A*B和A.*B的值是否相等?(2) A./B和B.\A的值是否相等?(3) A/B和B\A的值是否相等?(4) A/B和B\A所代表的数学含义是什么?答:(1)不相等;(2)不相等;(3)不相等;(4) A/B=A*inv(B); B\A=inv(B)*A;3. 写出完成下列操作的命令。
(1)将矩阵A第2~5行中第1,3,5列元素赋给矩阵B。
(2)删除矩阵A的第7号元素。
(3)将矩阵A的每个元素值加30。
(4)求矩阵A的大小和维数。
(5)将向量t的0元素用机器零来代替。
(6)将含有12个元素的向量x转换成3×4矩阵。
(7)求一个字符的ASCII码。
(8)求一个ASCII码所对应的字符。
答:假设A=rand(5,5)%或假设A=[1,2,3,4,5; 6,7,8,9,10; 11,12,13,14,15; 16,17,18,19,20; 21,22,23,24,25](1) B=A(2:5,[1,3,5]) %或者 B=A(2:5, 1:2:5)(2) A(7)=[](3) A+30(4) size(A), ndims(A)(5) t=0:0.1:1, t(find(t==0))=eps(6) x=1:12, reshape(x,3,4)(7) abs('b') %或者double('b')(8) char(98) %或者setstr(98)4.下列命令执行后,L1、L2、L3、L4的值分别是多少?A=1:9; B=10-A;L1=A==B;L2=A<=5;L3=A>3 & A<7;L4=find(A>3&A<7);答:L1L2L3L4L1 =0 0 0 0 1 0 0 0 0L2 =1 1 1 1 1 0 0 0 0L3 =0 0 0 1 1 1 0 0 0L4 =4 5 65. 已知: 23100.7780414565532503269.5454 3.14−⎡⎤⎢⎥−⎢⎥=⎢⎥⎢⎥−⎣⎦A 完成下列操作:(1) 取出A 的前3行构成矩阵B ,前两列构成矩阵C ,右下角3×2子矩阵构成矩阵D ,B 与C 的乘积构成矩阵E 。
matlab第二章

ceil(1.8)=2
4)round四舍五入到最近的整数,如round(-1.3)=-1;round(-1.52)=2;round(1.3)=1;round(1.52)=2。
MATLAB 中的变量不需要事先定义,在 遇到新的变量名时,MATLAB会自动建立该变 量并分配存储空间。当遇到已存在的变量时, MATLAB会更新其内容,如有必要会重新分配
存储空间。
下一页
变量名由字母、数字和下划线构成, 并且必须以字母开头,最长为31个字符。 MATLAB能区分大小写字母,变量A和a是
例如: if a>1
disp('a>1')
elseif a==1
disp('a=1')
else disp('a<1') end 上一页 返回
3、逻辑函数
MATLAB提供了许多测试用的逻辑函数,
主要有all、any、find、exist、is*等。
返回
all函数
利用all函数可以测定矩阵每列所有
元素是否非零。若该列所有元素非零,则
利用重复函数repmat可以将小矩阵以
重复的形式产生大矩阵。
例如: f=repmat(a,2,3)
3、矩阵缩小 将大矩阵变成小矩阵的方法有两种: 抽取法和删除法。 (1)抽取法是指从大的矩阵中抽取中 的一部分,从而构成新的矩阵。例如: a=[1:4; 5:8; 9:12; 13:16] b=a(2:3, 3:4) c=a([1 4],[1 3]) d=a([2 4],[1 3])
第二章 Matlab的基本运算-yxw

2.2 矩阵和数组的算术运算
• 空数组(empty array):没有元素的数组; • 标量(scalar):是指1×1的矩阵,即为只含一
个数的矩阵; • 向量(vector):是指1×n或n×1的矩阵,即只
有一行或者一列的矩阵; • 矩阵(matrix):是一个矩形的m×n数组,即二
4字节 8字节
-3.40282×1038 ~ +3.40282×1038
-1.79769×10308 ~ +1.79769×10308
类型转换 函数 single()
double()
2.1.3 复数
• MATLAB用特殊变量“i”或“j”表示虚数的 单位。
• 复数的产生可以有几种方式:
• z=a+b*i或z=a+b*j • z=a+bi或z=a+bj(当b为常数时)
a(11)
• 中元素通过n个下标来引用:
图 2.4 矩阵的元素
• a(d1,d2,d3….)
例如:一个m×n的a矩阵的第i行第j列的元素表 示为a(i,j)。
• (2)单下标方式
• 数组元素用单下标引用,就是先把数组的所有 列按先左后右的次序连接成“一维长列”,然 后对元素位置进行编号。
• 以m×n的矩阵a为例,元素a(i,j)对应的单下标 = (j-1)×m+i。
• A. 10
B. 11
C.
9
D. 12
答案: B
• 3. 矩阵
• 矩阵是m行n列(m×n)的二维数组, 需要使用“[ ]”、“,”、“;”、空格等符号 创建。
• 最简单的方法是采用矩阵构造符“[]”。 构造1n矩阵(行向量)时,可以将各 元素依次放入矩阵构造符[]内,并且以 空格或者“,”分隔;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例: >> y=[1 1 1;2 2 2;3 3 3]; >> x=y %全元素方式赋值数组元素 x= 1 1 1 2 2 2 3 3 3 >> x(1,4)=100 x= 1 1 1 100 2 2 2 0 3 3 3 0
4.矩阵的合并 矩阵的合并就是把两个以上的矩阵连接起来得 到一个新矩阵,“[]”符号可以作为矩阵合并操 作符,命令格式如下:
第2章 MATLAB基本运算
2.1 数据类型 2.2 矩阵和数组的算术运算 2 .3 字符串 2.4 日期和时间 2.5 结构体和元胞数组 2.6 多维数组 2.7 关系运算和逻辑运算 2.8 数组的信息获取 2.9 多项式
2.1数据类型
MATLAB R2010a定义了15种基本的数据类型,包括整 型、浮点型、字符型和逻辑型等,用户甚至可以定义自 己的数据类型。
2.3 字符串 2.3.1 创建字符串
字符串由多个字符组成,是1×n的字符 数组;每一个字符都是字符数组的一个元 素,以ASCII码的形式存放并区分大小,而 显示的形式则是可读的字符。
1. 创建字符串
>> s1='matlab 7.3' s1 = matlab 7.3
(1)直接赋值 用单引号('')括起字符来直接赋值创建字符串。 使用两个单引号('')输入字符串中的单引号
from:step:to 说明:from、step和to分别表示开始值、步长和 结束值;当step省略时则默认为step=1;当step省 略或step>0而from>to时为空矩阵,当step<0而 from<to时也为空矩阵。
练习
(2)使用linspace和logspace函数生成向量
linspace(a,b,n) logspace(a,b,n)
数组
Char 字符型
Numeric 数值型
cell 元胞型
structure 结构体型
Java classes Java类
Function handle 函数句柄
User classes 用户类型 int8、int16、 int32、int64 uint8、uint16、 uint32、uint64 single 单精度型 double 双精度型
c=[a b] c=[a;b]
%将矩阵a和b水平方向合并为c %将矩阵a和b垂直方向合并为c
5.数组元素的删除 在MATLAB中可以对数组中的单个元素、子矩 阵和所有元素进行删除操作,删除就是将其赋值 为空矩阵(用[]表示)。
2.2.3 矩阵和数组函数
1. 矩阵的常用函数 det(x)、rank(x)、inv(x)、[v,d]=eig(x)、 diag(x)、[q,r]=qr(x)、triu(x)和tril(x) 2.数组翻转 常用数组翻转函数 :flipud(x)、fliplr(x)、 flipdim(x,dim)、rot90(x,k)
3.数组查找 一般用于在比较命令后面,查找非零元素 。其命令格式如下:
[a,b,…]=find(x) n=find(x)
4.数据统计 MATLAB的数据统计分析是按列进行的, 包括得出各列的最大值、最小值等统计。
2.2.4 矩阵和数组的算术运算
MATLAB的二维数组和矩阵从外观和数据结 构上看没有区别,矩阵的运算规则是按照线 性代数运算法则定义的,但是有着明确而严 格的数学规则。
2.2.5 稀疏矩阵
一个矩阵中如果包含很多元素值为0,则此 矩阵可以只存储少量的非0元素,这个矩阵称 为稀疏矩阵(Sparse Matrix)。 1. 创建稀疏矩阵 sparse函数的语法格式如下:
sparse(i,j,s,m,n) %直接创建稀疏矩阵 sparse(p) %由全元素矩阵p转换为稀疏矩阵
练习
(2)特殊变量
特殊变量名 ans pi eps inf 或 INF NaN 或 nan
取值 运算结果的默认变量名 圆周率π 浮点数的相对误差 无穷大,如 1/0 不定值,如 0/0、∞/∞、0×∞
特殊变量名 i或 j nargin nargout realmin realmax
取值 i=j= ,虚数单位
练习
2. 浮点数
数据类型 单精度型 single 双精度型 double 存储空间 4字节 8字节 表示范围 -3.40282×1038 ~ +3.40282×1038 -1.79769×10308 ~ +1.79769×10308 类型转换 函数 single() double()
2.1.3 复数
a(2,4) a(11)
2.子矩阵的产生 (1)用全下标方式 注意:下标为“:”表示向量的所有元素,下 标为“end”表示某一维中的最后一个元素。 (2)用单下标方式
>> a([10;11;12]) >> a(10:12)' >> a(10:end)' >> a([10;11;end])
练习
3.数组的赋值 数组的赋值包括全下标方式、单下标方式 和全元素方式。 • 全下标方式:a(i,j,k…)=b,给a数组的部分 元素赋值,则b数组的行列数必须等于a数组 的行列数。 • 单下标方式:a(n)=b,b为向量,元素个数 必须等于a矩阵的元素个数。 • 全元素方式:a=b,给a数组的所有元素赋 值,则b数组的元素总数必须等于a矩阵的元 素总数,但行列数不一定相等。
A.*B A./B A.\B A.^B A.'
%数组A和数组B对应元素相乘 %数组A除以数组B的对应元素 %数组B除以数组A的对应元素 %数组A和数组B对应元素的乘方 %数组A的转置
例2-14 使用数组算术运算法则进行向量 的运算。
>> t=0:pi/3:2*pi; %t为行向量 >> x=sin(t)*cos(t) ??? Error using ==> mtimes Inner matrix dimensions must agree. >> x=sin(t).*cos(t) x= 0 0.4330 -0.4330 -0.0000 0.4330 -0.4330 0.0000 >> y=sin(t)./cos(t) y= 0 1.7321 -1.7321 -0.0000 1.7321 -1.7321 0.0000
2.2.1 数组的创建
在MATLAB中矩阵的创建应遵循以下基本 常规: • 矩阵元素应用方括号([])括住; • 每行内的元素间用逗号(,)或空格隔开; • 行与行之间用分号(;)或回车键隔开; • 元素可以是数值或表达式。
1. 空数组 2.向量 向量包括行向量(row vector)和列向量( column vector),即1×n或n×1的矩阵。 (1)使用from:step:to方式生成向量 如果是等差的行向量,可以使用 “from:step:to”方式生成:
%生成线性等分向量 %生成对数等分向量
说明: a、b、n三个参数分别表示开始值、结束值和元 素个数; linspace函数生成从a到b之间线性分布的n个元素 的行向量,n如果省略则默认值为100; logspace函数生成从10a到10b之间按对数等分的n 个元素的行向量,n如果省略则默认值为50。 练习例2-5
3.矩阵 矩阵是m行n列(m×n)的二维数组,需 要使用“[ ]”、“,”、“;”、空格等符号 创建。 例 :用三种方法创建矩阵
a= 1 2 9
2 3 8 3 4 7 4 5 6
4.特殊矩阵和数组
2.2.2 数组的操作
1.数组的元素 a(1,3) a(7) (1)全下标方式 全下标方式是指n维数组 中元素通过n个下标来引用: a(d1,d2,d3….) 图 2.4 矩阵的元素 (2)单下标方式 数组元素用单下标引用,就是先把数组的所有 列按先左后右的次序连接成“一维长列”,然后 对元素位置进行编号。 以m×n的矩阵a为例,元素a(i,j)对应的单下标= (j-1)×m+i。
1.矩阵运算 矩阵的基本运算是+、-、×、÷和乘方(^)等。 (1)矩阵的加、减运算 A+B 和A-B (2)矩阵的乘法运算 A*B
(3)矩阵的除法运算 矩阵的除法运算表达式有两种: A\B %左除 A/B %右除 (4)矩阵的乘方 A^B (5)矩阵的转置 A' %矩阵A的转置
例2-12 用矩阵除法求方程组的解,已知 方程组: 2x1 3x 2 x 3 8
>> s3='显示''matlab''' s3 = 显示‘matlab’ >> str2=[s1;s2,' str2 = matlab 7.3 字符串 显示'matlab'
(2)多个字符串组合
';s3]
2. 字符数组的存储空间 MATLAB在存储字符串时,每一个字符以ASCII码的形式 存放,占用两个字节。 练习
MATLAB用特殊变量“i”或“j”表示虚 数的单位。 复数的产生可以有几种方式:
z=a+b*i或z=a+b*j z=a+bi或z=a+bj(当b为常数时) z=r*exp(i*theta) z=complex(a,b)
2.2 矩阵和数组的算术运算
• 空数组(empty array):没有元素的数组; • 标量(scalar):是指1×1的矩阵,即为只含一 个数的矩阵; • 向量(vector):是指1×n或n×1的矩阵,即 只有一行或者一列的矩阵; • 矩阵(matrix):是一个矩形的m×n数组,即 二维数组; • 数组(array):是指多维数组m×n×k×…, 其中矩阵和向量都是数组的特例。
x1 x 2 x 3 7 x 3x x 6 2 3 1