Matlab数据处理之数组元素求积函数prod

4.7
(3)

Matlab中,prod函数用于求数组元素的乘积。本文将从以下几方面介绍prod函数:prod函数常见用法、prod函数用法说明、prod函数实例。其中,prod函数实例包括:每列元素的乘积、逻辑输入的乘积、每行元素的乘积、每个平面中元素的乘积、将单精度输入视为双精度输入、输入和输出的整数数据类型。

Matlab数据处理之数组元素求积函数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
Matlab数据处理之数组元素求积函数prod

每个平面中元素的乘积

创建一个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
Matlab数据处理之数组元素求积函数prod

将单精度输入视为双精度输入

创建一个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
Matlab数据处理之数组元素求积函数prod

输入和输出的整数数据类型

创建一个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

共计3人评分,平均4.7

到目前为止还没有投票~

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

文章目录

原创文章,作者:古哥,转载需经过作者授权同意,并附上原文链接:https://iymark.com/articles/3924.html

(0)
微信公众号
古哥的头像古哥管理团队
上一篇 2022年12月31日 13:53
下一篇 2023年01月01日 18:02

你可能感兴趣的文章

发表回复

登录后才能评论
微信小程序
微信公众号