MATLAB-1-6基本运算

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向量,分别求个位数字向量、十位数字向量、百位数字向量
%注意求某数立方数的写法,用.*,而不是^,乘方的右侧只能为标量
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章