📜  如何在 MATLAB 中计算累积积

📅  最后修改于: 2022-05-13 01:55:42.549000             🧑  作者: Mango

如何在 MATLAB 中计算累积积

序列的累积乘积是序列的运行乘积或部分乘积

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);

输出 :