29、matlab算数运算汇总2:加、减、乘、除、幂、四舍五入
1、乘法:times, .*
语法
C = A.*B 通过将对应的元素相乘来将数组 A 和 B 相乘。
C = times(A,B) 是执行 A.*B 的替代方法,
1)将两个向量相乘
代码及运算
A = [1 0 3];
B = [2 3 7];
C = A.*B
C =
2 0 21
2) 将两个数组相乘
代码及运算
A = [1 0 3; 5 3 8; 2 4 6];
B = [2 3 7; 9 1 5; 8 8 3];
C = A.*B
C =
2 0 21
45 3 40
16 32 18
2、 mtimes, * 矩阵乘法
语法
语法:C = A*B 是 A 和 B 的矩阵乘积
语法:C = mtimes(A,B) 是执行 A*B 这一操作的替代方法
1)将两个向量相乘
代码及运算
A = [1 1 0 0];
B = [1; 2; 3; 4];
C = A*B
C =
3
2) 将两个数组相乘
代码及运算
A = [1 3 5; 2 4 7];
B = [-5 8 11; 3 9 21; 4 0 8];
C = A*B
C =
24 35 114
30 52 162
3、prod数组元素的乘积
语法
B = prod(A) 返回 A 的数组元素的乘积。
B = prod(A,"all") 返回 A 的所有元素的乘积
B = prod(A,dim) 返回沿维度 dim 的乘积。
B = prod(___,nanflag) 指定包含还是省略 A 中的 NaN 值。
1)每列中元素的乘积
代码及运算
A=[1:3:7;2:3:8;3:3:9]
B = prod(A)
A =
1 4 7
2 5 8
3 6 9
B =
6 120 504
2) 逻辑输入的乘积
代码及运算
A = [true false; true true]
B = prod(A)
A =
2×2 logical 数组
1 0
1 1
B =
1 0
3) 每行中元素的乘积
代码及运算
A=[1:3:7;2:3:8;3:3:9]
dim = 2;
B = prod(A,dim)
A =
1 4 7
2 5 8
3 6 9
B =
28
80
162
4) 排除缺失值的乘积
代码及运算
A = [1.77 -0.005 NaN -2.95; NaN 0.34 NaN 0.19]
B = prod(A,"omitnan")
A =
1.7700 -0.0050 NaN -2.9500
NaN 0.3400 NaN 0.1900
B =
1.7700 -0.0017 1.0000 -0.5605
4、 cumprod 累积乘积
语法
B = cumprod(A) 返回 A 的累积乘积,该累积乘积从 A 中大小大于 1 的第一个数组维度开始计算。
B = cumprod(A,dim) 返回沿维度 dim 计算的元素的累积乘积。
B = cumprod(___,direction) 可在上述任一语法的基础上指定计算方向。
B = cumprod(___,nanflag) 指定包含还是省略 A 中的 NaN 值。
1)向量的累计乘积
说明:说明:计算从 1 到 5 的整数的累积乘积。元素 B(2) 是 A(1) 和 A(2) 的乘积,而 B(5) 是元素 A(1) 至 A(5) 的乘积。
代码及运算
A = 1:5;
B = cumprod(A)
B =
1 2 6 24 120
2) 矩阵列中的累积乘积
代码及运算
A = [1 4 7; 2 5 8; 3 6 9]
B = cumprod(A)
A =
1 4 7
2 5 8
3 6 9
B =
1 4 7
2 20 56
6 120 504
3) 矩阵行中的累积乘积
说明:计算 A 的行的累积乘积。元素 B(3) 是 A(1) 和 A(3) 的乘积,而 B(5) 是 A(1)、A(3) 和 A(5) 的乘积。
代码及运算
A = [1 3 5; 2 4 6]
B = cumprod(A,2)
A =
1 3 5
2 4 6
B =
1 3 15
2 8 48
4) 不包括缺失值的累积乘积
代码及运算
A = [3 5 NaN 4; 2 6 NaN 9; 1 3 0 NaN]
B = cumprod(A,"omitnan")
5、除法rdivide, ./ 数组右除
语法
x = A./B 用 A 的每个元素除以 B 的对应元素。
1)除以两个数值数组
代码及运算
A = [2 4 6 8; 3 5 7 9];
B = 10*ones(2,4);
x = A./B
x =
0.2000 0.4000 0.6000 0.8000
0.3000 0.5000 0.7000 0.9000
2) 整数除法
代码及运算
a = int16(10);
b = int16([3 4 6]);
x = a./b
x =
1×3 int16 行向量
3 3 2
3) 数组除以标量
代码及运算
C = 5;
D = magic(3);
x = C./D
x =
0.6250 5.0000 0.8333
1.6667 1.0000 0.7143
1.2500 0.5556 2.5000
4) 将行向量和列向量相除
代码及运算
a = 1:2;
b = (1:3)';
a ./ b
ans =
1.0000 2.0000
0.5000 1.0000
0.3333 0.6667
6、 ldivide, .\ 数组左除
语法
x = B.\A 用 A 的每个元素除以 B 的对应元素。
1)除以两个数值数组
代码及运算
A = ones(2,3);
B = [1 2 3; 4 5 6];
x = B.\A
x =
1.0000 0.5000 0.3333
0.2500 0.2000 0.1667
2) 数值数组除以标量
代码及运算
c = 2;
D = [1 2 3; 4 5 6];
x = D.\c
x =
2.0000 1.0000 0.6667
0.5000 0.4000 0.3333
3) 将行向量和列向量相除
代码及运算
a = 1:2;
b = (1:3)';
b .\ a
ans =
1.0000 2.0000
0.5000 1.0000
0.3333 0.6667
7、power, .^ 按元素求幂
语法
C = A.^B 计算 A 中每个元素在 B 中对应指数的幂。
1)计算向量每个元素的平方
代码及运算
A = 1:5;
C = A.^2
C =
1 4 9 16 25
2) 计算每个矩阵元素的倒数
代码及运算
A = [1 2 3; 4 5 6; 7 8 9];
C = A.^-1
C =
1.0000 0.5000 0.3333
0.2500 0.2000 0.1667
0.1429 0.1250 0.1111
3) 以列向量为指数对行向量按元素求幂
代码及运算
a = [2 3];
b = (1:3)';
a.^b
ans =
2 3
4 9
8 27
4) 计算数的根
代码及运算
A = -1;
B = 1/3;
C = A.^B
C = nthroot(A,3)
C =
0.5000 + 0.8660i
C =
-1
8、mpower, ^ 矩阵幂
语法
C = A^B 计算 A 的 B 次幂并将结果返回给 C。
1)构造方阵
代码及运算
A = [1 2; 3 4];
C = A^2
C =
7 10
15 22
2)矩阵指数
代码及运算
B = [0 1; 1 0];
C = 2^B
C =
1.2500 0.7500
0.7500 1.2500
9、transpose, .' 转置向量或矩阵
语法
B = A.' 返回 A 的非共轭转置,即每个元素的行和列索引都会互换。
1)实矩阵转置
代码及运算
A = magic(4)
B = A.'
A =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
B =
16 5 9 4
2 11 7 14
3 10 6 15
13 8 12 1
2) 复矩阵转置
代码及运算
A = [1 3 4-1i 2+2i; 0+1i 1-1i 5 6-1i]
B = A.'
A =
1.0000 + 0.0000i 3.0000 + 0.0000i 4.0000 - 1.0000i 2.0000 + 2.0000i
0.0000 + 1.0000i 1.0000 - 1.0000i 5.0000 + 0.0000i 6.0000 - 1.0000i
B =
1.0000 + 0.0000i 0.0000 + 1.0000i
3.0000 + 0.0000i 1.0000 - 1.0000i
4.0000 - 1.0000i 5.0000 + 0.0000i
2.0000 + 2.0000i 6.0000 - 1.0000i
10、 mod 除后的余数(取模运算)
语法
b = mod(a,m) 返回 a 除以 m 后的余数,其中 a 是被除数,m 是除数
1)标量被除后的余数
代码及运算
b = mod(23,5)
b =
3
2) 向量被除后的余数
代码及运算
a = 1:5;
m = 3;
b = mod(a,m)
b =
1 2 0 1 2
3)正值和负值被除后的余数
代码及运算
a = [-4 -1 7 9];
m = 3;
b = mod(a,m)
b =
2 2 1 0
4) 用负除数除后的余数
代码及运算
a = [-4 -1 7 9];
m = -3;
b = mod(a,m)
b =
-1 -1 -2 0
5)浮点值被除后的余数
代码及运算
theta = [0.0 3.5 5.9 6.2 9.0 4*pi];
m = 2*pi;
b = mod(theta,m)
b =
0 3.5000 5.9000 6.2000 2.7168 0
11、 rem 除后的余数
语法
r = rem(a,b) 返回 a 除以 b 后的余数,其中 a 是被除数,b 是除数。
1)标量被除后的余数
代码及运算
a = 23;
b = 5;
r = rem(a,b)
r =
3
2)向量被除后的余数
代码及运算
a = 1:5;
b = 3;
r = rem(a,b)
r =
1 2 0 1 2
3) 正值和负值被除后的余数
代码及运算
a = [-4 -1 7 9];
b = 3;
r = rem(a,b)
r =
-1 -1 1 0
4) 浮点值被除后的余数
代码及运算
theta = [0.0 3.5 5.9 6.2 9.0 4*pi];
b = 2*pi;
r = rem(theta,b)
r =
0 3.5000 5.9000 6.2000 2.7168 0
13、idivide 带有舍入选项的整除
语法
C = idivide(A,B) 将 A 的每个元素除以 B 的对应元素,朝零方向舍入到最接近的整数。
C = idivide(A,B,opt) 指定替代舍入选项:'fix'、'floor'、'ceil' 或 'round'。
1)整数除法
代码及运算
A = int16([-7 -4 7 11]);
B = int16(10);
C = idivide(A,B)
C =
1×4 int16 行向量
0 0 0 1
2)两个整数数组相除
代码及运算
A = int64([-2 3]);
B = int64([3 5]);
C = idivide(A,B)
C =
1×2 int64 行向量
0 0
3) 整数除法的舍入选项:用默认舍入选项 'fix' 将 A 除以 B 的每个元素。
代码及运算
A = 2.0;
B = int32([-3 3 4]);
C = idivide(A,B)
C = idivide(A,B,'floor')
C = idivide(A,B,'ceil')
C = idivide(A,B,'round')
C =
1×3 int32 行向量
0 0 0
C =
1×3 int32 行向量
-1 0 0
C =
1×3 int32 行向量
0 1 1
C =
1×3 int32 行向量
-1 1 1