【问题标题】:A function to calculate cumulative maximum for a double matrix in MATLAB在 MATLAB 中计算双精度矩阵的累积最大值的函数
【发布时间】:2015-06-18 14:09:00
【问题描述】:

是否有任何函数可以计算 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 函数,但遇到了这个错误:

“double”类型的输入参数的未定义函数“cummax”

【问题讨论】:

  • cummax 仅在较新版本的 Matlab 中,您运行的是哪个版本?

标签: matlab function matrix max


【解决方案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

【讨论】:

  • 我试过你提供的这个功能。我遇到了这个错误:函数 cummax2(x) |错误:此上下文中不允许函数定义。
  • 你需要把它放在一个.m文件中。
【解决方案2】:

这是一个使用bsxfun的替代方案:

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

【讨论】:

  • 感谢您的建议。
猜你喜欢
  • 2011-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-17
  • 1970-01-01
  • 1970-01-01
  • 2012-12-17
  • 2013-07-30
相关资源
最近更新 更多