MATLAB的基本算术运算有:+(加)、-(减)、*(乘)、/(右除)、(左除)、^(乘方)。运算是在矩阵意义下进行的,基本单位应该是矩阵,单个数据的算术运算只是一种特例。 运算符号及其功能表
符号功能+加法-减法*乘法_*点乘,数组乘法/右除_/数组右除\左除_\数组左除^乘方_^数组乘方’矩阵共轭转置_’矩阵转置假定有两个矩阵A和B,则可以由A+B和A-B实现矩阵的加减运算。运算规则是:若A和B矩阵的维数相同,则可以执行矩阵的加减运算,A和B矩阵的相应元素相加减。如果A与B的维数不相同,则MATLAB将给出错误信息,提示用户两个矩阵的维数不匹配。(只能维数相同的两个矩阵才能进行矩阵间的加减法运算)
矩阵加减一个数(矩阵的每一个元素都加减这个数)
x=[2,-1,0;3,2,-4] y=x-1输出:
x = 2 -1 0 3 2 -4 y = 1 -2 -1 2 1 -5矩阵间加减运算(两个矩阵对应位置元素进行加减运算)
x+y输出
ans = 3 -3 -1 5 3 -9乘运算 假定有两个矩阵A和B,若A为m×n矩阵,B为n×p矩阵,则C=A*B为m×p矩阵。若矩阵A和B进行乘法运算,要求A的列数和B的行数相等,则称A、B矩阵可乘的,或称A、B两矩阵维数相容。如果两者的维数不相容,则将给出错误信息。
>> A ,B A = 1 2 3 4 4 5 6 7 7 8 9 1 B = -2 1 3 -1 1 4 1 0 1 1 2 3 A*B ans = 3 11 26 0 23 59 -12 17 65点乘运算 假定有两个矩阵A和B,若A为m×n矩阵,B为m×n矩阵,A,B才能进行.*运算,因为两个矩阵间的点乘运算是两矩阵对应位置元素相乘,得到一个与运算矩阵维数相同的矩阵。
A ,B A = 1 2 3 4 4 5 6 7 7 8 9 1 B = -2 1 3 -1 1 4 1 0 1 1 2 3 A.*B %进行点乘运算时 矩阵维度必须一致。 A=[1,2,3;4,5,6;7,8,9] B=[-2,1,3;-1,1,4;1,0,1] A = 1 2 3 4 5 6 7 8 9 B = -2 1 3 -1 1 4 1 0 1 >> A.*B ans = -2 2 9 -4 5 24 7 0 9 %维度一致时,才能进行点乘运算在MATLAB中,有两种矩阵除法运算:\和/,分别表示左除和右除。 如果A矩阵是非奇异方阵,则A\B和B/A运算可以实现。 A\B等效于inv(A)B B/A等效于Binv(A)
对于含有标量的运算,两种除法运算的结果相同,如:3/4和4\3有相同的值,都等于0.75。又如:a=[10.5,25],则a/5=5\a=[2.1000 5.0000]。对于矩阵来说,虽然此处是含有含有标量的矩阵除法运算,左除和右除表示两种不同的除数矩阵和被除数矩阵的关系。
对于矩阵运算,一般A\B≠B/A。 除法运算:按照矩阵除法正常运算
A=[8,6,3;4,6,6;12,4,9] B=[2,2,1;2,3,6;3,2,3] A/B B\A输出
ans = 2.5385 -0.6154 1.3846 2.3077 1.0769 -0.9231 -2.5385 -1.3846 6.6154 ans = 5.2308 -0.4615 3.6923 -0.9231 3.8462 -2.7692 -0.6154 -0.7692 1.1538点除运算:矩阵各个元素对于标量进行除法运算
A=[8,6,3;4,6,6;12,4,9] B=[2,2,1;2,3,6;3,2,3] A./B B.\A输出:
ans = 4 3 3 2 2 1 4 2 3 ans = 4 3 3 2 2 1 4 2 3一个矩阵的乘方运算可以表示成A^x,要求A为方阵,x为标量。
乘方运算:矩阵乘矩阵,正常按矩阵算法
A=[1,2,3;4,5,6;7,8,9] A^2输出
A = 1 2 3 4 5 6 7 8 9 ans = 30 36 42 66 81 96 102 126 150 %相当于两个矩阵A相乘点乘方运算:是矩阵的各个元素进行乘方运算
A=[1,2,3;4,5,6;7,8,9] A.^2输出:
A = 1 2 3 4 5 6 7 8 9 ans = 1 4 9 16 25 36 49 64 81 %各个元素进行乘方运算函数功能fix向0方向取整floor向-∞方向取整ceil向+∞方向取整round四舍五入到最邻近的整数
对于上述函数的使用:
x=-3.1415 >> fix(x) %向0取整 ans = -3 >> floor(x) %向-∞ 取整 ans = -4 >> ceil(x) %向+∞ 取整 ans = -3 >> round(x) %四舍五入到最近整数 ans = -3 函数功能rem求余运算mod求模运算当y≠0时 rem(x,y)=x-y.*fix(x./y) mod(x,y)=x-y.*floor(x./y)
如果a,b符号相同,那么rem(a,b)=mod(a,b) 如果a,b符号相反,则rem(a,b)的符号与a相同,而mod(a,b)符号与b相同。
rem(7,4),mod(7,4); rem(-7,-4),mod(-7,-4); rem(7,-4), mod(7,-4); rem(-7,4),mod(-7,4)输出:
3,3 3,3 3,-1 -3,1当y=0时 rem(x,0)=NaN(非数) mod(x,0)=x
运算法则: (1)两个标量的比较 若关系成立,结果为1,否则为0。 (2)两个同维数矩阵的比较 对相同位置的元素比较。 (3)标量与矩阵的比较 标量与矩阵的每一个元素比较。
函数名使用:对于矩阵a,b的比较, lt(a,b),gt(a,b)等,类推。
>> a b a = 1 2 3 4 5 6 7 8 9 b = 9 8 7 6 5 4 3 2 1 lt(a,b) %判断a<b ans = 3×3 logical 数组 1 1 1 1 0 0 0 0 0(1) 在逻辑运算中,确认非零元素为真,用1表示,零元素为假,用0表示。 (2) a和b是两个标量 a&b a,b全为非零时,结果为1,否则为0。 a|b a,b中只要有一个非零,结果为1,否则为0。 ~a 当a是零时,结果为1;当a非零时,结果为0。 (3) 两个运算量是同维矩阵 相同位置上的元素按标量规则逐个进行。 (4) 一个是标量,另一个是矩阵 标量与矩阵中的每个元素之间按标量规则逐个进行。 (5) 逻辑非是单目运算符,也服从矩阵运算规则。 (6) 在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先级最低。
优先级:高到低为算术运算、关系运算、逻辑运算
补充的关系函数: all函数 :当某列的元素都为真时,返回值为1,否则返回0。最终运算结果为一个0-1行向量
any函数 :当向量中至少有一个元素为真时,返回值为1,否则返回0。最终运算结果为一个0-1行向量
find函数 :用于查找向量中的真元素的下标,返回由所有真元素下标构成的列向量。
A=[1 2 0 5;3 0 6 0;2 4 0 7] t1=all(A) t2=any(A) t3=find(A) t4=find(A>3)输出
A = 1 2 0 5 3 0 6 0 2 4 0 7 t1 = 1×4 logical 数组 1 0 0 0 t2 = 1×4 logical 数组 1 1 1 1 t3 = 1 2 3 4 6 8 10 12