Rolling max/min maximum and minimum
显示 更早的评论
This may have already been asked and aswered, but I couldn't find anything on Matlab Answers or Google. Is there a slick vectorized way to calculate a rolling maximum/minimum for a vector. So the maximum over the previous n values (inclusive of the current value). For indices i < n the value should either be the max of the values with indices 1:i or NaN, I can live with either. So for example:
x = [1, 3, 2, 7, 4, 3]; n = 2;
should give
rollingMax = [NaN, 3, 3, 7, 7, 4] or [1, 3, 3, 7, 7, 4]
回答(3 个)
If you have the Image Processing Toolbox, you can use IMDILATE
>> imdilate( [1, 3, 2, 7, 4, 3] ,[1,1])
ans =
1 3 3 7 7 4
Without a toolbox:
x = randi(10,1,100);
n = 2;
maxVec = arrayfun(@(a,b) max(x(a:b)),1:numel(x)-n+1,n:numel(x));
1 个评论
类别
在 帮助中心 和 File Exchange 中查找有关 MATLAB Mobile Fundamentals 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!