matlab - 索引移动极差

标签 matlab indexing

我试图获取数据集中每年的最大值。数据在一列中,按每日时间步长排列。 如何从前 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/

相关文章:

java - java中该三维数组沿第三维的平均值

python - 如何在 Python 中播放矢量?

c++ - matlab R2013a 和 MS VC++ 2013 之间的链接错误

python - 我的 if 语句有什么问题? Python

java - 在 Java 中使用 char 索引访问数组

python - 元组拆包顺序更改分配的值

Matlab 使用 interp1 查找索引?

python - MATLAB 有什么用?为什么大学如此使用它?什么时候比 Python 更好?

r - 从数据框中的第一行创建数据框的标题

ios - 在 opengl-es iOS 中建立索引