我写了一个函数来计算交易日最后15分钟的平均价格。在附加的excel文件中,我的平均值为55.23,但我在MATLAB中的函数返回55.32。我整天都在弄乱这一点,无法找出差异的答案。谁能告诉我为什么excel和MATLAB中的手段不同?谢谢。
function last15MinsOfDay=last15MinsOfDay(time,price)
% last15MinsOfDay takes the average of prices between 3:45 and 4:00.
timeStr=cellstr(datestr(time));
timeDbl=datevec(timeStr);
times=and(timeDbl(:,4)==14,timeDbl(:,5)>=46)+and(timeDbl(:,4)==15,timeDbl(:,5)==0);
priceIdx=find(times);
z=find(fwdshift(1,priceIdx)~=priceIdx+1);
z=[1; z];
mu=zeros(length(z),1);
for i = 1:length(z)-1;
mu(i)=mean(price(priceIdx(z(i):z(i+1))));
end
last15MinsOfDay=mu;
答案 0 :(得分:1)
您的数据中的正确平均值为55.236。我不确定你在priceIdx
行之后的行中究竟是什么意思,但在MATLAB中只是:
mean(price(priceIdx))
其中priceIdx
是您要包含的项目索引的向量,应该是您需要的。