How to calculate moving average excluding current data?
이전 댓글 표시
How to calculate moving average to not include current data for the current period. For example, I'm trying to create the Donchian Channel and the formula is the 20 high or 20 low of the preceding date. If so, this should not include the current date. All the moving and tsmovavg includes the current date.
답변 (1개)
dpb
2016년 11월 27일
N=20; % number above/below midpoint
u=[ones(1,N) 0 ones(1,N)]/(2*N-1); % weighting
mAvg0=conv(data,u,'valid');
댓글 수: 4
liu James
2016년 11월 27일
dpb
2016년 11월 27일
Have you read
doc conv
and tried a small example? It's simply the convolution of the data with the u vector which is [1 1 ... 0 ... 1 1] weighted by the number of nonzero terms. IOW, you're multiplying each subsection of the data of length 2N+1 by 1/2N, the proportional weight for a mean of 2N points.
Image Analyst
2016년 11월 27일
It's just considering the N points to the right and left of the current point. The center point (i.e. the "current" point) has a weight of zero so it's not included in the sum.
dpb
2016년 11월 28일
>> [x;[nan conv(x,[1 0 1]/2,'valid') nan]]
ans =
1 2 3 4 5 6 7 8 9 10
NaN 2 3 4 5 6 7 8 9 NaN
>>
should make it patently clear, one would think???
카테고리
도움말 센터 및 File Exchange에서 Logical에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!