如何在 MATLAB 中计算累积积
序列的累积乘积是序列的运行乘积或部分乘积
The cumulative products of the sequence {a,b,c,…}, are a, a*b, a*b*c, ….
Matlab允许我们使用 cumprod()方法计算向量、矩阵的累积乘积。 cumprod() 方法的不同语法是
- B = cumprod(A)
- B = cumprod(A,dim)
- B = cumsprod(___,方向)
- B = cumprod(___,nanflag)
现在我们将详细讨论上述语法:
B = cumprod(A)
- 该方法返回从数组 A 开始处开始的 A的累积乘积。
- 如果A 是向量,则返回序列 A 的累积乘积
- 如果A 是矩阵,则它返回沿 A每一列的累积乘积。
示例 1:
Matlab
% Input vector
A = 2:8;
B = cumprod(A);
% Displays cumulative
% products of A
disp(B)
Matlab
% Input matrix
A = [1 4 7; 2 5 8; 3 6 9];
disp("Matrix :")
disp(A)
B = cumprod(A);
% Display cumulative product of matrix A
disp("Cumulative product :")
disp(B)
Matlab
% input matrix
A = [1 3 5; 2 4 6];
disp("Matrix :")
disp(A)
% Cumulative product along each
% row from left to right
B = cumprod(A,2);
disp("Cumulative product :")
disp(B);
Matlab
% input matrix
A = [1 3 5; 2 4 6];
disp("Matrix :")
disp(A)
% Cumulative product of A along each row
% starting from right to left
B = cumprod(A,2,'reverse');
disp("Cumulative product :")
disp(B)
Matlab
% Input vector
A = [3 5 NaN 9 0 NaN];
disp("Vector :");
disp(A);
% Including NaN values
B = cumprod(A,'includenan');
disp("Cumulative product Incude NaN :");
disp(B);
% Excluding NaN values
B = cumprod(A,'omitnan');
disp("Cumulative product Exclude NaN :");
disp(B);
输出 :
示例 2:
MATLAB
% Input matrix
A = [1 4 7; 2 5 8; 3 6 9];
disp("Matrix :")
disp(A)
B = cumprod(A);
% Display cumulative product of matrix A
disp("Cumulative product :")
disp(B)
输出 :
B = cumprod(A,dim)
- 返回矩阵 A 与每个dim的累积乘积。
- dim 取两个值1 或 2 。
- dim = 1 ,指的是沿着每一列。
- dim = 2 ,指的是每一行。
MATLAB
% input matrix
A = [1 3 5; 2 4 6];
disp("Matrix :")
disp(A)
% Cumulative product along each
% row from left to right
B = cumprod(A,2);
disp("Cumulative product :")
disp(B);
输出 :
B = cumprod(___,方向)
- 返回输入向量或矩阵在给定方向上的累积乘积。
- 方向采用两个值“向前”或“反向”
- 如果方向是“反向”,则反向计算累积乘积,即如果我们考虑沿每一列的矩阵,则它返回从每列底部到顶部开始的累积乘积。
MATLAB
% input matrix
A = [1 3 5; 2 4 6];
disp("Matrix :")
disp(A)
% Cumulative product of A along each row
% starting from right to left
B = cumprod(A,2,'reverse');
disp("Cumulative product :")
disp(B)
输出 :
B = cumprod(___,nanflag)
- nanflag值决定在累积乘积中是否包含或排除向量的 NaN 值。
- nanflag取两个值'includenan' 或 'omitnan' 分别对应于包含 NaN 元素和排除 NaN 元素。
- 'omitNaN' 将 NaN 值视为 1。
注: NaN * 数字 = NaN
MATLAB
% Input vector
A = [3 5 NaN 9 0 NaN];
disp("Vector :");
disp(A);
% Including NaN values
B = cumprod(A,'includenan');
disp("Cumulative product Incude NaN :");
disp(B);
% Excluding NaN values
B = cumprod(A,'omitnan');
disp("Cumulative product Exclude NaN :");
disp(B);
输出 :