当前位置:网站首页>MATLAB程序设计与应用 2.5 MATLAB运算
MATLAB程序设计与应用 2.5 MATLAB运算
2022-08-01 06:23:00 【Ding Jiaxiong】
MATLAB程序设计与应用
2. 第2章 MATLAB数据及其运算
2.5 MATLAB运算
MATLAB的运算都是针对矩阵而言的,既有矩阵意义下的运算,也有针对矩阵元素的运算。就运算的性质而言,有算术运算、关系运算和逻辑运算。
2.5.1 算术运算
基本算术运算
MATLAB的基本算术运算有+(加)、-(减)、*(乘)、/(右除)、\(左除)、^(乘方)。
矩阵加减运算
若A和B同型,则可以执行矩阵的加减运算,A和B的相应元素相加减。如果A与B不同型,则MATLAB将给出错误信息,提示用户两个矩阵的维数或大小不匹配。
一个标量也可以和矩阵进行加减运算,这时把标量和矩阵的每一个元素进行加减运算。
>> x = [2,-1,0;3,2,-4]; >> y = x - 1 y = 1 -2 -1 2 1 -5
矩阵乘法
假定有两个矩阵A和B,若A为mxn矩阵,B为nxp矩阵,则C=A×B为mxp矩阵,其各个元素为:
>> A = [1,2,3;4,5,6]; >> B = [1,2;3,0;7,4]; >> C = A * B C = 28 14 61 32
矩阵A和B进行乘法运算,要求A的列数与B的行数相等,此时则称A、B矩阵是可乘的,或称A和B两矩阵维数和大小相容。如果两者的维数或大小不相容,则将给出错误信息,提示用户两个矩阵是不可乘的。
在 MATLAB中,还可以进行矩阵和标量相乘运算,标量可以是乘数也可以是被乘数。矩阵和标量相乘是矩阵中的每个元素与此标量相乘。
矩阵除法
在MATLAB中,有两种矩阵除法运算:\和/,分别表示左除和右除。如果A矩阵是非奇异方阵,则A\B和B/A运算可以实现。A\B等效于A的逆左乘B矩阵,也就是inv(A)*B;而B/A等效于A矩阵的逆右乘B矩阵,也就是B*inv(A)。
对于含有标量的运算,两种除法运算的结果相同,对于矩阵运算,一般 A\B≠B/A。
>> A = [1,2,3;4,2,6;7,4,9]; >> B = [4,3,2;7,5,1;12,7,92]; >> C1 = A \ B C1 = 0.5000 -0.5000 44.5000 1.0000 0.0000 46.0000 0.5000 1.1667 -44.8333 >> C2 = B / A C2 = -0.1667 -3.3333 2.5000 -0.8333 -7.6667 5.5000 12.8333 63.6667 -36.5000 >> C3 = A / B C3 = 7.9623 -4.2453 -0.0943 -4.5472 2.9434 0.1321 -5.1321 3.6415 0.1698 >> C4 = B \ A C4 = 6.0755 -3.3396 2.6038 -7.6792 5.0566 -2.4340 -0.1321 0.0943 -0.0566
矩阵的乘方
一个矩阵的乘方运算可以表示成A^x,要求A为方阵,x为标量。
>> A = [1,2,3;4,5,6;7,8,0]; >> A ^ 2 ans = 30 36 15 66 81 42 39 54 69 A ^ 2 = A * A
矩阵的开方
>> A = [1,2,3;4,5,6;7,8,0]; >> A ^ 0.1 ans = 0.9750 + 0.2452i 0.1254 - 0.0493i 0.0059 - 0.0604i 0.2227 - 0.0965i 1.1276 + 0.1539i 0.0678 - 0.1249i 0.0324 - 0.1423i 0.0811 - 0.1659i 1.1786 + 0.2500i
点运算
在 MATLAB 中,有一种特殊的运算,因为其运算符是在有关算术运算符前面加点,所以叫点运算。点运算符有.*、./、.\和.^。两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵同型。
>> A = [1,2,3;4,5,6;7,8,9]; >> B = [-1,0,1;1,-1,0;0,1,1]; >> C = A .* B C = -1 0 3 4 -5 0 0 8 9
A.*B表示A和B单个元素之间对应相乘,显然与A*B的结果不同。
如果A、B两矩阵同型,则A./B表示A矩阵除以B矩阵的对应元素。B.\A 等价于A./B。
>> A = [1,2,3;4,5,6]; >> B = [-2,1,3;-1,1,4]; >> C1 = A ./ B C1 = -0.5000 2.0000 1.0000 -4.0000 5.0000 1.5000 >> C2 = B .\ A C2 = -0.5000 2.0000 1.0000 -4.0000 5.0000 1.5000
显然,A./B和B.\A值相等。这与矩阵的左除、右除是不一样的。
若两个矩阵同型,则A.^B表示两矩阵对应元素进行乘方运算。
>> A = [1,2,3]; >> B = [4,5,6]; >> C = A .^ B C = 1 32 729
指数可以是标量
>> A = [1,2,3]; >> C = A .^ 2 C = 1 4 9
底数也可以是标量
>> A = [1,2,3]; >> B = [4,5,6]; >> C = 2 .^ [A B] C = 2 4 8 16 32 64
点运算是MATLAB很有特色的一个运算符,在实际应用中起着很重要的作用。
当x=0.1、0.4、0.7、1时,分别求y=sinxcosx的值。
>> x = 0.1:0.3:1; >> y = sin(x) .* cos(x) y = 0.0993 0.3587 0.4927 0.4546 >> y = sin(x) * cos(x) 错误使用 * 用于矩阵乘法的维度不正确。请检查并确保第一个矩阵中的列数与第二个矩阵中的行数匹配。要单独对矩阵的每个元素进行运算,请使 用 TIMES (.*)执行按元素相乘。
如果x只有一个值,才能直接用乘法
2.5.2 关系运算
MATLAB提供了6种关系运算符:<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、=(等于)、~=(不等于)。它们的含义不难理解,但要注意其书写方法与数学中的不等式符号不尽相同。MATLAB还提供了与6种关系运算符对应的函数lt、le、gt、ge、eq、ne。
当两个比较量是标量时,直接比较两数的大小。若关系成立,关系表达式结果为1,否则为0
>> 12 > 3 ans = logical 1 >> eq(2,3) ans = logical 0
当参与比较的量是两个同型的矩阵时,比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行,并给出元素比较结果。最终的关系运算的结果是一个与原矩阵同型的矩阵,它的元素由0或1组成。
当参与比较的一个是标量,而另一个是矩阵时,则把标量与矩阵的每一个元素按标量关系运算规则逐个比较,并给出元素比较结果。最终的关系运算的结果是一个与原矩阵同型的矩阵,它的元素由0或1组成。
【产生5阶随机方阵A,其元素为[10,90]区间的随机整数,然后判断A的元素是否能被3整除。】
>> A = fix((90 - 10 + 1) * rand(5) + 10)
A =
75 17 22 21 63
83 32 88 44 12
20 54 87 84 78
83 87 49 74 85
61 88 74 87 64
>> P = rem(A , 3) == 0
P =
5×5 logical 数组
1 0 0 1 1
0 0 0 0 1
0 1 1 1 1
0 1 0 0 0
0 0 0 1 0
关系运算函数
函数名 | 含义 |
---|---|
all | 若向量的所有元素非零,则结果为1,否则为0 |
any | 若向量中任何一个元素非零,则结果为1,否则为0 |
exist | 检查变量在工作空间中是否存在,若存在,则结果为1,否则为0 |
find | 找出向量或矩阵中非零元素的位置 |
isempty | 若被查变量是空矩阵,则结果为1,否则为0 |
isinf | 若元素是+(-)inf,则结果矩阵相应位置元素取1,否则取0 |
isnan | 若元素是 nan,则结果矩阵相应位置元素取否则取0 |
isfinite | 若元素值大小有限,则结果矩阵相应位置元素取1,否则取0 |
isinteger | 若被查变量是整型,则取1,否则取0 |
isnumeric | 若被查变量是数值型,则取1,否则取0 |
isreal | 若被查变量是实数,则取1,否则取0 |
isfloat | 若被查变量是浮点型,则取1,否则取0 |
【建立矩阵A,然后找出大于4的元素的位置,并输出相应位置的元素。】
>> A = [4,-65,-54,0,6;56,0,67,-45,0]
A =
4 -65 -54 0 6
56 0 67 -45 0
>> k = find(A > 4)
k =
2
6
9
>> A(k)
ans =
56
67
6
find 函数得到的矩阵元素的位置是以相应元素的序号来表示的。
2.5.3 逻辑运算
MATLAB提供了3种逻辑运算符:&(与)、|(或)和~(非)。此外,还提供了4个逻辑运算函数:and(a,b)、or(a,b)、not(a)和 xor(a,b),分别代表与、或、非、异或运算。
在逻辑运算中,非零元素为真,用1表示;零元素为假,用0表示。设参与逻辑运算的是两个标量a和b,那么,逻辑运算的含义:
- a&b或函数and(a, b):当a、b全为非零时,结果为1,a、b只要有一个为零则结果为0。
- a|b或函数or(a, b):当a、b中只要有一个非零,结果为1,a、b全为零时结果为0。
- ~a和函数not(a):当α是零时,结果为1:当α非零时,结果为0。
- 函数xor(a, b):当a、b的值不同时,结果为1;当a、b的值相同时,结果为0。
运算法则:
- 若参与逻辑运算的是两个同型矩阵,那么运算将对矩阵相同位上的元素按标量规则逐个进行。最终运算结果是一个与原矩阵同型的矩阵,其元素由1或0组成。
- 若参与逻辑运算的一个是标量,一个是矩阵,那么运算将在标量与矩阵中的每个元素之间按标量规则逐个进行。最终运算结果是一个与矩阵同型的矩阵,其元素由1或0组成。
- 逻辑非是单目运算符,也服从矩阵运算规则。
>> A = [4,65,-54,0,-6];
>> B = [0,5,3,2,-6];
>> A & B
ans =
1×5 logical 数组
0 1 1 0 1
>> xor(A > 10 , B < 10)
ans =
1×5 logical 数组
1 0 1 1 1
在算术运算、关系运算和逻辑运算中,算术运算优先级最高,逻辑运算优先级最低。
边栏推荐
- Why is the lightweight VsCode used more and more?Why eat my C drive 10G?How to Painlessly Clean VsCode Cache?Teach you how to lose weight for C drive
- 点餐系统数据库设计--SQL Server
- 头歌MySQL数据库实训答案 有目录
- 混合型界面:对话式UI的未来
- 微信小程序用户登录auth.code2Session接口开发
- 响应式织梦模板园林景观类网站
- Malicious attacks on mobile applications surge by 500%
- Dbeaver connect the MySQL database and error Connection refusedconnect processing
- 小白的0基础教程SQL: 什么是SQL 01
- Selenium: Dropdown Box Actions
猜你喜欢
Explosive 30,000 words, the hardest core丨Mysql knowledge system, complete collection of commands [recommended collection]
安装SQL Server详细教程
WPF项目-初步了解数据绑定 binding
What should I do if the neural network cannot be trained?
第5章——以程序方式处理MySQL数据表的数据
Robot growth in China
从离线到实时对客,湖仓一体释放全量数据价值
Srping中bean的生命周期
Dart 异常详解
对于升级go1.18的goland问题
随机推荐
七、MFC序列化机制和序列化类对象
curl (7) Failed connect to localhost8080; Connection refused
[Translation] Securing cloud-native communications: From ingress to service mesh and beyond
Information system project managers must recite the work of the core test site (56) Configuration Control Board (CCB)
uva10825
上课作业(7)——#598. 取余运算(mod)
matlab 风速模型 小波滤波
Use controls as brushes to get bitmap code records
LeetCode 0149. Maximum number of points on a line
LeetCode 0150. 逆波兰表达式求值
LeetCode 0150. Reverse Polish Expression Evaluation
Compare two objects are the same depth
Hunan institute of technology in 2022 ACM training sixth week antithesis
WPF项目-初步了解数据绑定 binding
2022.7.26 Mock Competition
阿里云李飞飞:中国云数据库在很多主流技术创新上已经领先国外
仿牛客网讨论社区项目—项目总结及项目常见面试题
leetcode125 Verify palindrome string
2022.7.26 模拟赛
仿牛客网项目总结