每月最大的数据

14日视图(30天)
马克斯Langworthy
马克斯Langworthy 2021年1月22日
编辑: 马克斯Langworthy2021年1月25日
我想写一个函数,发现整个数据集的所有月度最大值。我很新的编程和MATLAB。这是一个循环类似于我正在做的事情
i = 1:10 0
(我)= max (d (i))
结束
我试图使用这个代码,复制粘贴每年的数据集,因为我不知道如何使用时间表或双”的循环,但我收到一个错误消息告诉我,左右有不同数量的元素。我怎么能把这个给我这个函数我寻找吗?
1评论
dpb
dpb 2021年1月22日
不打头靠墙,转换为一个时间表,然后使用 调整时间
这样将会大约两到三行代码——有明显的例子在医生给它一个去后回你的努力和被困的地方。

登录置评。

接受的答案

凯利卡尼
凯利卡尼 2021年1月23日
当你可以这样做 找到 ,使用第二个输出马克斯有点快。
%一些假的数据与你的相似
t = datetime (2018 1, 1:50 0) ';
rsq =[兰德(500 1)日(t)月(t)年(t));
%找到马克斯……
imax = 0(12日1);
我= 1:12
tmp = rsq (: 1);%的临时副本的数据
tmp (rsq (:, 3) ~ = im) =无穷;%不匹配这个月低
[~,imax (im)] = max (tmp);%的回报指数最大的价值
结束
maxval = rsq (imax,:)

答案(1)

dpb
dpb 2021年1月24日
t = datetime (2018 1, 1:50 0) ';
rsq =[兰德(500 1)日(t)月(t)年(t));
另外上面的相同的数据结构:
maxVals = splitapply (@max rsq (: 1), findgroups (rsq (:, 3)));
这个解决方案和上面都将成为全球最大给定月的数组中所有的数据,如果有多个年的数据,不需要分析所有月的年复合,然后必须在两年和月集团:
(g,补贴,idm) = findgroups (rsq (:, 4), rsq (:, 3));
maxVals = splitapply (@max rsq (: 1), g)];
对于一个给定的值,这导致了:
(idm补贴maxVals)
ans =
1.00 2018.00 0.98
2.00 2018.00 0.97
3.00 2018.00 0.99
4.00 2018.00 0.99
5.00 2018.00 1.00
6.00 2018.00 0.92
7.00 2018.00 0.99
8.00 2018.00 0.91
9.00 2018.00 0.97
10.00 2018.00 0.96
11.00 2018.00 0.95
12.00 2018.00 0.99
1.00 2019.00 0.93
2.00 2019.00 0.96
3.00 2019.00 1.00
4.00 2019.00 0.99
5.00 2019.00 0.96
> >
以表格形式分组id变量 findgroups 。我使用 格式的银行 为了避免违约的自动扩展格式但这并添加两个小数点在整数值…
一个表并不是任何困难——从上面的数组中,
trsq = array2table (rsq,“VariableNames”,{“数据”,“天”,“月”,“年”});
tmaxVals = rowfun (@max trsq,“数据源”,“数据”,
“GroupingVariables”,{“年”,“月”},,,,
“OutputVariableNames”,{“GroupMax”});
实现相同的随机数据如上这给:
> >格式,格式紧凑的
> >头(trsq)
ans =
8×表4
数据一天一年
_____________________
0.30596 - 1 1 2018
0.91988 - 2 2018
0.80037 - 3 2018
0.66754 - 4 2018
0.25832 - 5 2018
0.95717 6 2018
2018年0.40822 7日1
0.51435 8 2018
> > tmaxVals =
17×表4
一年GroupCountGroupMax
___________________________
2018年1 31日0.98046
28 2018 2 0.96657
2018年3 31日0.99294
2018 4 30 0.99388
2018 5 31日0.99522
2018 6 30 0.92159
2018年7 31日0.98775
2018年8 31日0.91045
2018 9 30 0.9694
2018年10 31日0.95942
2018年11 30 0.9504
2018年12 31日0.98866
2019年1 31日0.92582
28 2019 2 0.95508
2019年3 31日0.99525
2019 4 30 0.99393
2019 5 15 0.95888
> >

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的