我有一些有效的代码,但有点瓶颈,我一直在试图弄清楚如何加速它。它在一个循环中,我不知道如何对其进行矢量化。
我有一个代表时间序列数据的二维数组 vals。行是日期,列是不同的系列。我试图按月存储数据以对其执行各种操作(求和、平均值等)。这是我当前的代码:
allDts; %Dates/times for vals. Size is [size(vals, 1), 1]
vals;
[Y M] = datevec(allDts);
fomDates = unique(datenum(Y, M, 1)); %first of the month dates
[Y M] = datevec(fomDates);
nextFomDates = datenum(Y, M, DateUtil.monthLength(Y, M)+1);
newVals = nan(length(fomDates), size(vals, 2)); %preallocate for speed
for k = 1:length(fomDates);
下一行是瓶颈,因为我多次调用它。(循环)
idx = (allDts >= fomDates(k)) & (allDts < nextFomDates(k));
bucketed = vals(idx, :);
newVals(k, :) = nansum(bucketed);
end %for
有任何想法吗?提前致谢。