使用固定间隔计算系列的平均值
问题描述:
我有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有效地做到这一点?
谢谢!
答
原始序列中元素的数量将始终为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
谢谢Staus。出于某种原因,当我跑这个时,它给了我“索引超出矩阵尺寸误差”。当我应用到我的数据时,我得到了另一个错误:下标索引必须是真正的正整数或逻辑。我得到了这个逻辑,但不知道这里出了什么问题。 – 2014-11-24 03:33:33
在运行我的代码之前先执行'clear all',确保它不是来自旧变量的问题。如果没有这样做,它会分别运行每一行并找出哪一个给出错误。 – Staus 2014-11-24 03:36:14
你说得对。这确实是我一直在干扰代码的工作。非常感谢。这很奇妙。 – 2014-11-24 03:40:41