2014-11-24 82 views
0

我有12数据点x n会话的时间系列。所有的值都在一列中。使用固定间隔计算系列的平均值

我想平均所有会话,这样我就可以得到1个系列,只有12个数据点。举例来说,我可以有:

[a1 a2 ... a12 b1 b2 ... b12 c1 c2 ... c12] 

结果应该是[mean(a1, b1, c1) mean (a2, b2, c2)... mean(a12, b12, c12)]

谁能帮我在Matlab有效地做到这一点?

谢谢!

回答

0

原始序列中元素的数量将始终为12的倍数,因此您可以使用reshape()生成12 x n矩阵。从那里使用mean()很容易得到你想要的矢量。

nSessions = 20; % Choose an integer to test number of sessions 
TestData = 1:12; % Dummy data - col 1 = 1, col 2 = 2...to check that our reshaping is correct 
data = repmat(TestData, 1, nSessions); % Test data of the expected form 
reshapeData = reshape(data, 12, []); % Reshape into an 12 x N matrix; 
meanData = mean(reshapeData, 2); % Take mean along rows to yield desired answer 
+0

谢谢Staus。出于某种原因,当我跑这个时,它给了我“索引超出矩阵尺寸误差”。当我应用到我的数据时,我得到了另一个错误:下标索引必须是真正的正整数或逻辑。我得到了这个逻辑,但不知道这里出了什么问题。 – 2014-11-24 03:33:33

+0

在运行我的代码之前先执行'clear all',确保它不是来自旧变量的问题。如果没有这样做,它会分别运行每一行并找出哪一个给出错误。 – Staus 2014-11-24 03:36:14

+0

你说得对。这确实是我一直在干扰代码的工作。非常感谢。这很奇妙。 – 2014-11-24 03:40:41