所以,如果我理解正确,你想提取元素1-91,366-457,731-822,等等?我不知道,有一种方法与基本矩阵索引要做到这一点,但你可以做到以下几点:
days = 1:365; %Create array ranging from 1 - 365
difference = length(data) - 365; %how much bigger is time series data?
padded = padarray(days, [0, difference], 'circular'); %extend to fit time series
extracted = data(padded <= 91); %get every element in the range 1-91
基本上就是我做的是创建一个数组,其大小为您的时间序列相同一遍又一遍地重复1-365的数据。然后我上data
执行逻辑索引,使得填充的阵列是小于或等于91
作为更亲切例子,考虑:
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
days = 1:5;
difference = length(x) - 5;
padded = padarray(days, [0, difference], 'circular');
extracted = x(padded <= 2);
padded
然后等于[1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
和extracted
会[1, 2, 6, 7]