"dew" <ukap70@gmail.com> wrote in message
news:1144583032.170137.284430@v46g2000cwv.googlegroups.com...
> hi
> can someone please explain
> the meaning of this code
> its about computing the autocorrelation function IN MATLAB
>
> r1=[zeros(1,101)];
set up a column vector r1 of 101 elements all of which are set to 0
> for i=1:1:50
starting at i=1 execute the instructions between here and end then
increment i by 1 : exit for-end loop when i>50 : note that this overwrites
matlab's default value for i=sqrt(-1).
> x=rand(1,5000);
fill a 5000 element column vector x with double precision values between 0
and 1 selected from a uniform distribution - note that this is _inside_ the
loop
> r=zeros(1,101);
see r1 but this is _inside_ the loop so wipes out the last value that you
stored in r
> fori=1:1:50
set up a 50 element row vector fori so that element n holds value n.
> z=[x zeros(1,i)];
add i zeros on to the end of x and call it z
> y=[zeros(1,i) x];
add i zeros on to the beginning of x and call it y effectively shifting the
non-zero values of y w.r.t. those of z
> r(51+i)=sum(z.*y)./(5000-i);
multiply the shifted and original sequence together , for some reason
normalise by dividing by 5000-i and store the sum in element 51+i of the 101
element vector r
> end
loop back incrementing i by 1 as previously noted or continue to next line
of code if i>50 after the increment
> r(51)=sum(x.*x)./(5000);
put the mean squared value of x in element 51 of r
at this point i is not incrementing any more , the vector fori has not been
used at all, nor has r1 and everything runs very very slowly as x is filled
with a new set of random numbers and y and z are redimensioned every time
the loop executes. As r is zeroed at the start of each loop it should hold
non-zero values for element 51 and 101.
I could be completely wrong but thats as close as I can get to a description
of what this segment of code should be doing.
Best of luck - Mike
Reply by dew●April 9, 20062006-04-09
hi
can someone please explain
the meaning of this code
its about computing the autocorrelation function IN MATLAB
r1=[zeros(1,101)];
for i=1:1:50
x=rand(1,5000);
r=zeros(1,101);
fori=1:1:50
z=[x zeros(1,i)];
y=[zeros(1,i) x];
r(51+i)=sum(z.*y)./(5000-i);
end
r(51)=sum(x.*x)./(5000);
z=[ zeros(1,i) x];
y=[x zeros(1,i)];
r(i)=sum(z.*y)./(5000-i);