如何在 MATLAB 中计算累积积


在本文中,我们将学习如何在 MATLAB 中计算累积积。因此,让我们从累积积的基本定义开始。

什么是累积积?

以累积方式计算数字序列乘积的数学运算称为累积积

在累积积中,计算数字序列元素的乘积直到给定索引,并将每个步骤中获得的结果存储为数组的形式。

为了理解什么是累积积?让我们考虑以下示例。

假设一个数字序列为 [2, 4, 6, 8]。那么,此序列的累积积将按如下方式计算

步骤 (1) - 索引 0 处的元素的累积积 = 2 = 2 = [2]。

步骤 (2) - 索引 1 处的元素的累积积 = 2 × 4 = 8 = [2, 8]。

步骤 (3) - 索引 2 处的元素的累积积 = 2 × 4 × 6 = 48 = [2, 8, 48]。

步骤 (4) - 索引 3 处的元素的累积积 = 2 × 4 × 6 × 8 = 384 = [2, 8, 48, 384]。

因此,给定序列 [2, 4, 6, 8] 的累积积为 [2, 8, 48, 384]。

累积积用于分析某个量在一段时间内的变化情况。它广泛应用于统计学、信号处理、金融、工程等领域。

现在,让我们讨论如何在 MATLAB 中计算累积积。

在 MATLAB 中计算累积积

MATLAB 提供了一个内置函数“cumprod”来计算数字序列的累积积。

根据不同的用例,“cumprod”函数可以具有不同的语法。以下部分描述了“cumprod”函数的不同语法及其 MATLAB 代码实现以计算累积积。

数组元素的累积积

以下“cumprod”函数的语法用于计算数组元素的累积积

CP = cumprod(A);

其中,A 是要计算其累积积的元素的输入数组。此函数将返回另一个与数组“A”大小相同的数组,并存储在变量“CP”中。其中,数组“CP”中的每个元素都是数组“A”中所有元素直到给定索引的乘积。

以下 MATLAB 程序演示了此语法用于计算数组的累积积。

示例

% MATLAB code to calculate cumulative product of an array
% Create an input array
A = [2, 4, 6, 8];

% Calculate the cumulative product
CP = cumprod(A);

% Display the input array and cumulative product array
disp('The input array is:');
disp(A);
disp('The array of cumulative product is:');
disp(CP);

输出

The input array is:
   2   4   6   8
The array of cumulative product is:
     2     8    48   384

代码说明

在此 MATLAB 代码中,我们首先创建一个一维数组“A”。然后,我们调用“cumprod”函数来计算数组“A”的元素的累积积,并将结果存储在变量“CP”中,该变量是另一个与“A”大小相同的数组。最后,使用“disp”函数,我们显示输入数组和累积积。

沿指定维度的数组的累积积

以下“cumprod”函数的语法用于沿指定维度计算数组的累积积

CP = cumprod(A, dim);

如果“dim = 1”,则沿数组的列计算累积积。

如果“dim = 2”,则沿数组的行计算累积积。

请考虑以下 MATLAB 程序以了解此语法的实现。

示例

% MATLAB code to calculate cumulative product of an array in a specified dimension
% Create a multidimensional input array
A = [2 4 6 8; 3 5 7 9; 1 3 5 7];

% Calculate the cumulative product along columns of the array
CP1 = cumprod(A, 1);

% Calculate the cumulative product along rows of the array
CP2 = cumprod(A, 2);

% Display the input array and cumulative product arrays
disp('The input array is:');
disp(A);
disp('The cumulative product along columns is:');
disp(CP1);
disp('The cumulative product along rows is:');
disp(CP2);

输出

The input array is:
   2   4   6   8
   3   5   7   9
   1   3   5   7
The cumulative product along columns is:
     2     4     6     8
     6    20    42    72
     6    60   210   504
The cumulative product along rows is:
     2     8    48   384
     3    15   105   945
     1     3    15   105

代码说明

在此 MATLAB 代码中,我们首先定义一个多维数组“A”。然后,我们使用“cumprod”函数分别沿列 (dim = 1) 和行 (dim = 2) 计算此数组的累积积。最后,我们使用“disp”函数显示输入数组和累积积。

指定方向的累积积

以下“cumprod”函数的语法用于沿指定方向计算数组的累积积

CP = cumprod(A, direction);

其中,参数 direction 可以有两个可能的值,即“forward”和“reverse”。默认方向为 forward。

当方向设置为 forward 时,从数组的第一个元素到最后一个元素计算累积积。当方向设置为 reverse 时,从数组的最后一个元素到第一个元素计算累积积。

让我们借助示例 MATLAB 程序了解此语法的功能。

示例

% MATLAB code to calculate cumulative product of an array in a specified direction
% Create an input array
A = [2 4 6 8];

% Calculate the cumulative product in the forward direction
CP_F = cumprod(A, 'forward');

% Calculate the cumulative product in the reverse direction
CP_R = cumprod(A, 'reverse');

% Display the input array and cumulative product arrays
disp('The input array is:');
disp(A);
disp('The cumulative product in the forward direction is:');
disp(CP_F);
disp('The cumulative product in the reverse direction is:');
disp(CP_R);

输出

The input array is:
     2     4     6     8

The cumulative product in the forward direction is:
     2     8    48   384

The cumulative product in the reverse direction is:
   384   192    48     8

代码说明

在此 MATLAB 代码中,我们首先定义一个输入数组“A”。然后,我们使用“cumprod”函数分别沿 forward 和 reverse 方向计算此数组的累积积,并将结果分别存储在变量“CP_F”和“CP_R”中。最后,我们使用“disp”函数显示输入数组和累积积。

包含 NaN 值的数组的累积积

以下“cumprod”函数的语法用于计算包含 NaN 值的数组的累积积

CP = cumprod(A, nanflag);

这里,参数“nanflag”可以有两个可能的值,即“omitnan”和“includenan”。

当参数 nanflag 设置为“omitnan”时,“cumprod”函数在计算累积积时会忽略数组中存在的 NaN 值。

另一方面,如果参数 nanflag 设置为“includenan”,“cumprod”函数在计算累积积时会考虑数组中存在的所有 NaN 值。

以下 MATLAB 产品演示了此语法的实现和执行。

示例

% MATLAB code to calculate cumulative product of an array containing NaN values
% Create an input array with NaN values
A = [2 4 6 8 NaN 3 NaN 8];

% Calculate the cumulative product with including NaN values
CP_I = cumprod(A, 'includenan');

% Calculate the cumulative product with omitting NaN values
CP_O = cumprod(A, 'omitnan');

% Display the input array and cumulative product arrays
disp('The input array is:');
disp(A);
disp('The cumulative product with including NaN values is:');
disp(CP_I);
disp('The cumulative product with omitting NaN values is:');
disp(CP_O);

输出

The input array is:
     2     4     6     8   NaN     3   NaN     8

The cumulative product with including NaN values is:
     2     8    48   384   NaN   NaN   NaN   NaN

The cumulative product with omitting NaN values is:
           2           8          48         384         384        1152        1152        9216

代码说明

在此 MATLAB 代码中,我们首先定义一个输入数组“A”。然后,我们使用“cumprod”函数分别在包含 NaN 值和省略 NaN 值的情况下计算此数组的累积积,并将结果分别存储在变量“CP_I”和“CP_O”中。最后,我们使用“disp”函数显示输入数组和累积积。

结论

因此,这就是使用 MATLAB 编程计算数字序列或数组的累积积的全部内容。MATLAB 提供了一个内置函数“cumprod”,它具有不同的语法来计算数组或数字序列的累积积。在本文中,我们借助示例程序解释了 MATLAB 中“cumprod”函数的每种语法。

更新于: 2023年8月7日

163 次查看

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告