如何在 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”函数的每种语法。