基本运算
1. 算术运算
1)基本算术运算
- 基本算术运算符:+(加),-(减),*(乘),/(右除),\(左除),^(乘方)
- MATLAB的算术运算在矩阵意义下进行,单个数据的算术运算只是矩阵运算的特例。
i. 加减运算
- 两矩阵同型(矩阵的维数和大小相同),运算时矩阵相应元素相加减。
- 若矩阵不同型,则MATLAB将给出错误信息。
- 标量也可以和矩阵进行加减运算,即将标量和矩阵的每一个元素进行加减运算。
ii. 乘法运算
矩阵A列数与矩阵B行数相同,此时称矩阵A,B是可乘的,或矩阵A,B的维数和大小相容。
iii. 除法运算
若A矩阵是非奇异方阵(可逆矩阵),则B/A等效于B*inv(A),A\B等效于inv(A)*B。
B右除以A:B/A
B左除以A:A\B
对矩阵来说,右除和左除表示两种不同的除数矩阵和被除数矩阵关系。
左除和右除运算结果不同。
>> A=[1,2,3;4,2,6;7,4,9];
>> B=[4,3,2;7,5,1;12,7,92];
>> C1=B/A
C1 =
-0.1667 -3.3333 2.5000
-0.8333 -7.6667 5.5000
12.8333 63.6667 -36.5000
%为什么会出现负值,不是矩阵对应位置元素相除吗?
>> C2=A\B
C2 =
0.5000 -0.5000 44.5000
1.0000 0.0000 46.0000
0.5000 1.1667 -44.8333
%对于含有标量的运算,两种除法运算的结果相同
>> 3/4
ans =
0.7500
>> 3\4
ans =
1.3333
>> 4\3
ans =
0.7500
>> a=[10.5,25]
a =
10.5000 25.0000
>> a/5
ans =
2.1000 5.0000
>> 5\a
ans =
2.1000 5.0000
>> a\5
ans =
0
0.2000
%左除相当于:A\B,B左除以A
iv. 乘方运算
语法: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
2)点运算
点运算符:.+,.-,.*,./,.\,.^
两矩阵进行点运算是指其对应元素进行相关运算,要求两矩阵同型。
>> 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
%两矩阵对应元素做乘法运算
>> D=A*B
D =
1 1 4
1 1 10
1 1 16
%矩阵意义下的乘法运算
>> A./B
ans =
-1 Inf 3
4 -5 Inf
Inf 8 9
>> A.\B
ans =
-1.0000 0 0.3333
0.2500 -0.2000 0
0 0.1250 0.1111
%点左除和点右除运算结果不同
>> x=0.1:0.3:1;
>> y=sin(x).*cos(x)
y =
0.0993 0.3587 0.4927 0.4546
%求y的表达式中,必须是点乘运算。因为x是一个向量,sin(x)和cos(x)是和x同长度的向量。如果用乘法运算,会因两个向量相乘不相容而出错。
2. 关系运算符
六种关系运算符:<,<=,>,>=,==,~=(不等于)
1)比较标量
直接比较两数的大小。若关系成立,关系表达式结果为1,否则为0。
>> 3>5
ans =
logical
0
>> x=5
x =
5
>> x==6
ans =
logical
0
%一个等号为赋值,两个等号表示关系运算
2)比较同型矩阵
对两矩阵相同位置的元素按标量关系运算规则逐个进行,最终的关系运算结果是一个与原矩阵同型的矩阵,元素由0或1组成。
3)比较标量&矩阵
把标量与矩阵的每一个元素按标量关系运算规则逐个比较,最终的关系运算结果是一个与原矩阵同型的矩阵,它的元素由0或1组成。
%判断A的元素是否为偶数
>> A=[1,2,3;4,5,6;7,8,9];
>> P=rem(A,2)==0
P =
3×3 logical 数组
0 1 0
1 0 1
0 1 0
%==右边0被扩展为与A同型的零矩阵
3. 逻辑运算
逻辑运算符:&(与),|(或),~(非)
1)标量进行逻辑运算
a&b,a、b全非零时,运算结果为1,否则为0。
a|b,a、b中只要有一个为非零,运算结果为1。
~a,a为零时,运算结果为1;a为非零时,运算结果为0。
2)两同型矩阵进行逻辑运算
对矩阵相同位置上的元素按标量规则逐个进行运算,运算结果是一个与原矩阵同型的矩阵,其元素由0或1组成。
3)标量&矩阵进行逻辑运算
在标量与矩阵的每一个元素间按标量规则逐个计算,运算结果是一个与原矩阵同型的矩阵,其元素由0或1组成。
4. 运算符优先级
算术运算>关系运算>逻辑运算
算术运算符优先级最高,逻辑运算最低。但逻辑非运算是单目运算,其优先级比双目运算高。
>> ~9==1
ans =
logical
0
%先运算~9,再比较0==1
5. 求全部水仙花数
水仙花数指各位数字的立方之和等于该数本身的三位正整数。
>> x=100:1:999;
%生成x向量
>> a=rem(x,10);
>> b=rem(fix(x/10),10);
>> c=fix(x/100);
%因为x是向量,所以a,b,c是与x同长度的向量
>> y=find(x==a.*a.*a+b.*b.*b+c.*c.*c)
%在向量x中,找到水仙花数在x中的序号,赋给向量y
%find( )找的只是序号
y =
54 271 272 308
>> z=x(y)
%输出全部水仙花数
z =
153 370 371 407
%生成x向量,分别求个位数字向量、十位数字向量、百位数字向量
%注意求某数立方数的写法,用.*,而不是^,乘方的右侧只能为标量