在MATLAB中计算双矩阵累积最大值的函数

时间:2015-06-18 02:28:23

标签: matlab function matrix max

是否有任何函数可以计算 double 矩阵的累积最大值?我有一个1 * 3000矩阵,我需要计算累积最大值。 例如,如果矩阵是:

A = [8     3     6     7     9    10     6     2     2     3]

累积最大数组将是:

B = [8     8     8     8     9    10    10    10    10    10]

我尝试了 cummax 功能,但我遇到了这个错误:

未定义函数'cummax'表示'double'类型的输入参数

2 个答案:

答案 0 :(得分:1)

如果cummax无效,那么我想出了这个小功能

function m = cummax2(x)
    [X, ~] = meshgrid(x, ones(size(x)));
    %replace elements above diagonal with -inf
    X(logical(triu(ones(size(X)),1))) = -inf;
    %get cumulative maximum
    m = reshape(max(X'), size(x));
end

答案 1 :(得分:1)

以下是使用bsxfun的替代方案:

max(bsxfun(@(~,y)([A(1:y),-inf(1,numel(A)-y)]'), A', 1:numel(A)))