【发布时间】:2014-10-31 16:32:35
【问题描述】:
我对 matlab 很陌生,我正在尝试找到一种方法来完成以下任务,而不使用 for 循环:
我有一个如下所示的数据集:
data = [1 5; 1 3; 1 8; 2 1; 2 2; 2 5; 3 3; 3 8; 3 4]
第一列是一个组(是未来的月年组合)
现在我想计算具有给定窗口大小的第二列的总和,但前提是组索引相同 - 如果不是,则应计算该组中的最大总和。
如果窗口大小=2,我想创建以下结果:
summed_data = [1 8; 1 11; 1 8; 2 3; 2 7; 2 5; 3 11; 3 12; 3 4]
窗口大小为 3 时,结果如下所示:
summed_data = [1 16; 1 11; 1 8; 2 8; 2 7; 2 5; 3 15; 3 12; 3 4]
等等。
我曾考虑通过创建足够的子索引来使用 accumarray - 但我遇到了窗口大小问题并且总和重叠。
有没有人知道如何在不使用循环的情况下实现它?
提前致谢并致以最诚挚的问候 斯蒂芬
【问题讨论】:
-
在第一列中,
1s、2s、3s各有三个。总是这样吗?即所有标签的标签数量总是相同的? -
你好 Divakar,不,这只是(坏例子)案例。
标签: matlab accumarray