Matlab中,prod函数用于求数组元素的乘积。本文将从以下几方面介绍prod函数:prod函数常见用法、prod函数用法说明、prod函数实例。其中,prod函数实例包括:每列元素的乘积、逻辑输入的乘积、每行元素的乘积、每个平面中元素的乘积、将单精度输入视为双精度输入、输入和输出的整数数据类型。
prod函数帮助文档如下:
>> help prod
prod Product of elements.
S = prod(X) is the product of the elements of the vector X. If X is a
matrix, S is a row vector with the product over each column. For
N-D arrays, prod(X) operates on the first non-singleton dimension.
prod(X,DIM) works along the dimension DIM.
S = prod(..., TYPE) specifies the type in which the product is
performed, and the type of S. Available options are:
'double' - S has class double for any input X
'native' - S has the same class as X
'default' - If X is floating point, that is double or single,
S has the same class as X. If X is not floating point,
S has class double.
Example: If X = [0 1 2; 3 4 5]
then prod(X,1) is [0 4 10] and prod(X,2) is [0; 60]
If X = int8([5 5 5 5]) then prod(X) accumulates in double and the
result is double(625) while prod(X,'native') accumulates in
int8, but overflows and saturates to int8(127).
prod函数常见用法
B = prod(A)
B = prod(A,dim)
B = prod(___,type)
prod函数用法说明
B=prod(A)返回A的数组元素的乘积。
- 如果A是向量,则prod(A)返回元素的乘积。
- 如果A是非空矩阵,则prod(A)将A的列视为向量,并返回每列乘积的行向量。
- 如果A是空的0乘0矩阵,则prod(A)返回1。
- 如果A是一个多维数组,则prod(A)沿第一个非单维作用并返回一个乘积数组。此维度的大小减小为1,而所有其他维度的大小保持不变。
当输入A为单个时,prod计算并返回B为单个。对于所有其他数字和逻辑数据类型,prod计算B并将其返回为double。
B=prod(A,dim)返回沿尺寸dim的产品。例如,如果A是矩阵,则prod(A,2)是包含每行乘积的列向量。
B=prod(_,type)使用前面语法中的任何输入参数返回类型指定的类中的数组。类型可以是“double”、“native”或“default”。
prod函数实例
每列元素的乘积
创建一个3乘3的数组,其元素对应于其线性索引,找到每列元素的乘积。第一维度的长度为1,第二维度的长度与大小(A,2)匹配。
>> A=[1:3:7;2:3:8;3:3:9]
A =
1 4 7
2 5 8
3 6 9
>> B = prod(A)
B =
6 120 504
逻辑输入的乘积
创建逻辑值数组,找到每列元素的乘积。
>> A = [true false; true true]
A =
1 0
1 1
>> B = prod(A)
B =
1 0
输出的类型为double。
>> class(B)
ans =
double
每行元素的乘积
创建一个3乘3的数组,其元素对应于其线性索引。找到每行元素的乘积,并将第二个维度的长度减为1。第一维度的长度与大小(A,1)匹配,第二维度的长度为1。
>> A=[1:3:7;2:3:8;3:3:9]
A =
1 4 7
2 5 8
3 6 9
>> dim = 2;
>> B = prod(A,dim)
B =
28
80
162
每个平面中元素的乘积
创建一个3乘3乘2的数组,其元素对应于其线性索引。
>> A=[1:3:7;2:3:8;3:3:9];
>> A(:,:,2)=[10:3:16;11:3:17;12:3:18]
A(:,:,1) =
1 4 7
2 5 8
3 6 9
A(:,:,2) =
10 13 16
11 14 17
12 15 18
求出第一平面中每个元素与第二平面中相应元素的乘积。第一维度的长度与大小(A,1)匹配,第二维度的长度匹配大小(A,2),第三维度的长度为1。
>> dim = 3;
>> B = prod(A,dim)
B =
10 52 112
22 70 136
36 90 162
将单精度输入视为双精度输入
创建一个3乘3的单精度值数组。通过双倍精度相乘,求每行元素的乘积。
>> A = single([1200 1500 1800; 1300 1600 1900; 1400 1700 2000])
A =
1200 1500 1800
1300 1600 1900
1400 1700 2000
>> B = prod(A,2,'double')
B =
1.0e+09 *
3.2400
3.9520
4.7600
输出是双倍精度。
>> class(B)
ans =
double
输入和输出的整数数据类型
创建一个3乘3的8位无符号整数数组。
>> A = uint8([1:3:7;2:3:8;3:3:9])
A =
1 4 7
2 5 8
3 6 9
在uint8中查找每列元素的乘积。
>> B = prod(A,'native')
B =
6 120 255
结果是一个8位无符号整数数组。
>> class(B)
ans =
uint8
原创文章,作者:古哥,转载需经过作者授权同意,并附上原文链接:https://iymark.com/articles/3924.html