gpt4 book ai didi

matlab - 索引移动范围

转载 作者:行者123 更新时间:2023-12-04 05:47:41 26 4
gpt4 key购买 nike

我试图在我的数据集中获取每年的最大值。数据在一列中,按每天的时间步长排序。
如何从前 365 行获得最大值,然后从接下来的 365 行获得最大值?
我在想这样的事情:

years=31;
for i=1:years
peak(i)=max(data(i:365*i,2))
end

但是当 i=2 时,范围应该是 366:730 等等。
数据矩阵是 11322x7 double,我需要第 2 列。

最佳答案

我想建议类似@Thilo 的答案,但这并没有考虑闰年(它似乎出现在您的数据中,因为 365*31=11315,小于 11322)

您可能能够提出一个复杂的矢量化解决方案,但我很想手动跟踪开始和停止索引:

NYEARS = 31;

start = 1;
stop = 365 + isLeapYear(year(1));
n=1;
maxValues = nan(NYEARS,1);
while(n=<NYEARS)
maxValues(n) = max(data(start:stop,2));
n=n+1;
start = stop + 1;
stop = start + 365 + isLeapYear(year(n));
end

它可能不是非常快,但我怀疑这也将成为瓶颈。
function leap_p = isLeapYear(year)
leap_p = ~mod(year,400) || (~mod(year,4) && mod(year,100))
end

关于matlab - 索引移动范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10468262/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com