是否有任何函数可以计算 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'类型的输入参数
答案 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)))