MATLAB中的累积和
一个序列的累积和是一个序列的运行和或部分和。
序列{a,b,c,…}的累积和是a, a+b, a+b+c, ….
MATLAB允许我们使用cumsum()方法来计算矢量、矩阵的累积和。cumsum()方法的不同语法如下。
- B = cumsum(A)
- B = cumsum(A,dim)
- B = cumsum(___,direction)
- B = cumsum(___,nanflag)
让我们详细讨论一下上述语法。
cumsum(A)
- 该方法返回从数组A开始的A的累积和。
- 如果A是一个向量,那么它返回序列A的累积和。
- 如果A是一个矩阵,那么它沿A的每一列返回累积和。
示例 1:
% Input vector
A = 2:8;
B = cumsum(A);
% Displays cumulative sums
% of A
disp(B)
输出:
示例 2:
% Input matrix
A = [1 4 7; 2 5 8; 3 6 9];
disp("Matrix :")
disp(A)
B = cumsum(A);
% Display cumulative sum of matrix A
disp("Cumulative sum :")
disp(B)
输出 :
cumsum(A,dim)
- 返回矩阵A的累积和以及每个dim的累积和。
- dim有两个值1或2。
- dim=1,指的是沿着每一列。
- dim=2,沿每行指代。
% input matrix
A = [1 3 5; 2 4 6];
disp("Matrix :")
disp(A)
% Cumulative sum along each
% row from left to right
B = cumsum(A,2);
disp("Cumulative sum :")
disp(B)
输出 :
cumsum(___,direction)
- 返回输入向量或矩阵在给定方向上的累积和。
- 方向有两个值 “正向 “或 “反向”。
- 如果方向是’反向’,则反向计算累积和,即如果我们沿每一列考虑矩阵,则返回从每一列的底部到顶部开始的累积和。
% input matrix
A = [1 3 5; 2 4 6];
disp("Matrix :")
disp(A)
% Cumulative sum of A along each
% row starting from right to left
B = cumsum(A,2,'reverse');
disp("Cumulative sum :")
disp(B)
输出 :
cumsum(___,nanflag)
- nanflag值决定在累积和中是否包括或排除向量的NaN值。
- nanflag有两个值’includenan’或’omitnan’,分别对应于包括NaN元素和排除NaN元素。
- omitNaN’认为NaN值为0 .
注意: NaN + number = NaN
% Input vector
A = [3 5 NaN 9 0 NaN];
disp("Vector :");
disp(A);
% Including NaN values
B = cumsum(A,'includenan');
disp("Cumulative sum Include NaN :");
disp(B);
% Excluding NaN values
B = cumsum(A,'omitnan');
disp("Cumulative sum Exclude NaN :");
disp(B);
输出 :