Matlab中,可以使用cummax函数表示一组数据的累积最大值。累积最大值,沿其大小不为 1 的第一个数组维度运算返回累积最大值。关于最大值函数max的相关介绍,可以参考文章:《Matlab数据处理之max最值函数的用法介绍》。
.本文主要介绍cummax函数的常见用法、语法说明,以及一些常用实例。cummax的帮助文档如下:
>> help cummax
cummax Cumulative largest component.
Y = cummax(X) computes the cumulative largest component of X along
the first non-singleton dimension of X. Y is the same size as X.
Y = cummax(X,DIM) cumulates along the dimension specified by DIM.
Y = cummax(___,DIRECTION) cumulates in the direction specified by
the string DIRECTION using any of the above syntaxes:
'forward' - (default) uses the forward direction, from beginning to end.
'reverse' - uses the reverse direction, from end to beginning.
If X is complex, cummax compares the magnitude of the elements of X.
In the case of equal magnitude elements, the phase angle is also used.
Example: If X = [0 4 3
6 5 2]
cummax(X,1) is [0 4 3 and cummax(X,2) is [0 4 4
6 5 3] 6 6 6]
cummax(X,1,'reverse') is [6 5 3 and cummax(X,2,'reverse') is [4 4 3
6 5 2] 6 5 3]
cummax函数常见用法
M = cummax(A)
M = cummax(A,dim)
M = cummax(___,direction)
M = cummax(___,nanflag)
cummax函数语法说明
M = cummax(A) 返回 A 的累积最大元素。默认情况下,cummax(A) 沿其大小不为 1 的第一个数组维度运算。
- 如果 A 为向量,则 cummax(A) 返回一个包含 A 的累积最大值的等大小向量。
- 如果 A 是矩阵,则 cummax(A) 返回一个等大小的矩阵,其中包含 A 的各列中的累积最大值。
- 如果 A 是多维数组,则 cummax(A) 沿 A 的大小不为 1 的第一个数组维度返回一个等大小的数组,其中包含累积最大值。
M = cummax(A,dim) 返回沿维度 dim 的累积最大值。例如,如果 A 是矩阵,则 cummax(A,2) 沿 A 的各行返回累积最大值。
M = cummax(_,direction) 可选择性地使用上述任何语法指定方向。必须指定 A,也可以指定 dim。例如,cummax(A,2,’reverse’) 通过从尾到头计算 A 的第二个维度返回 A 的累积最大值。
M = cummax(_,nanflag) 指定在上述任意语法的计算中包括还是忽略 NaN 值。cummax(A,’includenan’) 会在计算中包括所有 NaN 值,而 cummax(A,’omitnan’) 则忽略这些值。
cummax函数实例
向量中的累积最大值
计算 1×10 随机整数向量的累积最大值。
>> v = randi(10,1,10)
v =
9 10 2 10 7 1 3 6 10 10
>> M = cummax(v)
M =
9 10 10 10 10 10 10 10 10 10
矩阵列中的累积最大值
计算 3×3 矩阵的各列的累积最大值。
>> A = [3 5 2; 1 6 3; 7 8 1]
A =
3 5 2
1 6 3
7 8 1
>> M = cummax(A)
M =
3 5 2
3 6 3
7 8 3
矩阵行中的累积最大值
计算 3×3 矩阵的各行的累积最大值。
>> A = [3 5 2; 1 6 3; 7 8 1]
A =
3 5 2
1 6 3
7 8 1
>> M = cummax(A,2)
M =
3 5 5
1 6 6
7 8 8
反向的累积最大数组值
计算 2×2×3 数组的第三个维度中的累积最大值。将 direction
指定为 'reverse'
可从第三个维度的末尾向开头运算。
>> A = cat(3,[1 2; 3 4],[9 10; 11 12],[5 6; 7 8])
A(:,:,1) =
1 2
3 4
A(:,:,2) =
9 10
11 12
A(:,:,3) =
5 6
7 8
>> M = cummax(A,3,'reverse')
M(:,:,1) =
9 10
11 12
M(:,:,2) =
9 10
11 12
M(:,:,3) =
5 6
7 8
包含 NaN 值的向量
创建一个包含 NaN
值的向量,并计算累积最大值。默认情况下,cummax
忽略 NaN
值。
>> A = [3 5 NaN 9 0 NaN];
>> M = cummax(A)
M =
3 5 5 9 9 9
如果您在计算中包括 NaN
值,则只要在 A
中遇到第一个 NaN
值,累积最大值将立即成为 NaN
。
我在Matlab 2016中运行后报错如下:
>> M = cummax(A,'includenan')
错误使用 cummax
CUMMAX 方向必须为 'forward' 或 'reverse'。
下面,给出官方的运行结果
>> M = cummax(A,'includenan')
M = 1×6
3 5 NaN NaN NaN NaN
原创文章,作者:古哥,转载需经过作者授权同意,并附上原文链接:https://iymark.com/articles/5237.html