easy indexing lon-loop versus loop

1 回表示 (過去 30 日間)
stephen williams
stephen williams 2021 年 3 月 29 日
コメント済み: stephen williams 2021 年 4 月 1 日
Hello, I have what I think is an easy indexing question, that has me scratching my head. I set up a simple moving average as such:
% the MA depth
Ml=16;
% the input data
x=[ zeros(1,Ml) 1:10 9:-1:7 8:10 9:-1:7 8:10 9:-1:7 8:10 9:-1:7]; % sequence to average out
% storage for output
y= zeros(1,length(x)+Ml);
%index
n= [Ml+1:length(x)];
%moving average
y(n)= y(n-1) + x(n)/Ml - x(n-Ml)/Ml;
which gives the wrong value for y(n). If I implement as a loop, it works fine.
% storage for output
yl= zeros(1,length(x)+Ml);
for n= Ml+1:length(x)
yl(n)= yl(n-1) + x(n)/Ml - x(n-Ml)/Ml
end
what is wrong with the non-loop version?
  1 件のコメント
stephen williams
stephen williams 2021 年 3 月 29 日
This is a general indexing question. I thought if you preallocated the y(n) locations, I could calculate y(n) based on y(n-1) but that is not working right.
I could have made up some other difference equation.

サインインしてコメントする。

回答 (1 件)

Bob Thompson
Bob Thompson 2021 年 3 月 29 日
I think the issue is with your loop definition. You define y1 to be length(x)+M1 long, but n is defined from M1+1 to length(x). I assume you were intending to do 1+M1 to length(x)+M1, but you will need to add the M1 to both sides of the colon.
% storage for output
yl= zeros(1,length(x)+Ml);
for n= Ml+1:length(x)
yl(n)= yl(n-1) + x(n)/Ml - x(n-Ml)/Ml
end
  4 件のコメント
stephen williams
stephen williams 2021 年 4 月 1 日
thanks Bob.
Yes this issue is beucase I am trying to do the calculations all at once, and that is the question. I have aalternative ways to solve. I am trying to understand why this way does not work.
--Steve
stephen williams
stephen williams 2021 年 4 月 1 日
thanks Bob.
Yes this issue is beucase I am trying to do the calculations all at once, and that is the question. I have alternative ways to solve. I am trying to understand why this way does not work.
--Steve

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

タグ

製品


リリース

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by