用小时平均值Matlab与矢量

时间:2014-12-29 02:14:52

标签: matlab average

我有一个

形式的向量
     0   21.3400
     0   22.3000
     1   22.3000

左栏是小时,右侧是值。我需要计算每小时的平均值。问题是我的样本运行时间超过24小时(多天),因此它会再次从0-23循环回到0-23。另一个问题是,有时我会丢失一小时的样本。例如;

   12.0000   29.5000
   14.0000   35.7400

关于如何解决这个问题的任何想法?

1 个答案:

答案 0 :(得分:1)

部分“所以它会再次从0-23回到0-23”我不清楚。也许您正在寻找模函数mod()。但是在解决了这个特定问题后,可以使用accumarray来解决平均问题。它就像是这个功能的完美用例。

%// your data
data = [
     0   21.3400
     0   22.3000
     1   22.3000
     12.0000   29.5000
     14.0000   35.7400];
 %// group (find subs)
 [hours, b, subs] = unique(data(:,1));

 %// apply function mean to grouped data
 avg = accumarray(subs, data(:,2), [], @mean);
 result = [hours, avg]

result中,结果存储为类似表,第一列是唯一小时,第二列是这些小时的平均数据。

result =

     0    21.8200
1.0000    22.3000
12.0000   29.5000
14.0000   35.7400

例如:对于小时0,数据值21.340022.300的平均值正确计算为(21.3400 + 22.300)/2,等于21.8200