我是MATLAB的新手,对于我的研究工作真的很遗憾。我一直在为许多不同的州下载和组织每小时水质数据,并按年度组织。我已经为他们做了数据准备以确保没有零/一年中的每一天(DOY)有24个值,但是时间序列图太吵了所以我的顾问希望我得到每日平均值。所有网站的年度数据在可用的天数方面都有所不同,有时由于没有录制而导致整个月缺失。所以我的问题是,如何开发一个代码来为我提供与特定DOY相关的平均每日价值,我可以将其应用于许多不同的Excel工作表。数据如下所示:
并保存文件,如CA1_2012(加利福尼亚州网站2012年1小时数据)
我知道这个主题有很多,但我一直在尝试一切,但我无法获得有效的代码!谢谢!
答案 0 :(得分:0)
您可以使用 accumarray
,根据matlab第一列中的值获取第二列的总和;
[m,~,n] = unique(data(:,1));
sumdata = [m, accumarray(n,data(:,2))];
表示我会建议 grpstats
:
avgdata = grpstats(data, DOY, {'mean'});
或@gnovice建议:
avgdata = accumarray(DOY, data, [], @mean);
您还可以通过DOY
中的数据透视表在Excel和组数据中获得所需内容,并在表格中获取它们的平均值。 (无需编码)。