在我的数据MATLAB中找到每60个元素的最大值

时间:2014-06-16 19:52:19

标签: matlab

我有一个包含很长数据列表的向量(时间序列)。我想找到每60个元素的最大值而不通过手动C = [max(B(1:60))等...]因为它是一个相当大的数据集。这样做有干净的方法吗?谢谢你的任何想法!我很感激。

3 个答案:

答案 0 :(得分:2)

奥利的建议值得成为一个正式的答案。试试这个:

C = max(reshape(B,60,[]));

答案 1 :(得分:0)

作为另一种选择,您可以查看blkproc。

A= randn(600,1);
blkproc( A, [60,1], 'max');

blkproc正在逐步淘汰,因此您还必须查看blockproc。

尽管如此,重塑和取最大值可能会更有效率,如评论中所述。

max( reshape(A, [60, 10] ) )

[更新]

作为注释......不要使用blkproc :-)。使用非常大的数组(A),blkproc比最大值重构速度慢100倍。

答案 2 :(得分:0)

您也可以使用'缓冲'功能。

A= randn(600,1);
max(buffer(A,60));

即使向量的长度不是60的精确倍数,这种解决方案仍然有效,并且与“重塑”功能相比更快。