"dwi" wrote in message <firstname.lastname@example.org>... > "dwi" wrote in message <email@example.com>... > > "Roger Stafford" wrote in message <firstname.lastname@example.org>... > > > "dwi" wrote in message <email@example.com>... > > > > I have a matrix whose data are interrupted by sequences of zeros. I need every time that there's a zero value to substitute it with a sum of exponentials using the previous data, eg: > > > > x=[x1 x2 x3 0 0 0 x7 0 0] > > > > When i find the first zero in the element x4 I want: > > > > x4=(x3*e^(-1)+x2*e^(-2)+x1*e^(-3))/(e^(-1)+e^(-2)+e^(-3)); > > > > However, when I find the second zero value I need to calculate the same expression but without using the previous recalculated values. That is, > > > > x4=x5=x6 > > > > and for x8 I will use only the values in x7,x3,x2,x1 and then x8=x9 etc > > > > And all this for a 180000-length data. > > > > Any ideas on how to do this? > > > > Thanks in advance > > > - - - - - - - - - > > > a = 0; b = 0; > > > for k = 1:length(x) > > > if x(k) ~= 0 > > > a = x(k) + a*e^(-1); > > > b = 1 + b*e^(-1); > > > else > > > x(k) = a/b; > > > end > > > end > > > > > > Roger Stafford > > Thank you for your answer but if I use this the index of the exponent never changes.I want it to decrease as k increases, and i don't know hot to calculate a sum like this. > > A correction: > x8=(x7*e^(-1))/e^(-1) > ie without using x1,x2,x3 but only the immediate previous non-zero values
This is what I have so far: s=0; s1=0; i=1; while i<=length(x) for j=1:length(x) if x(i)~=0 s=s+???? %%%%%the numerator which I still don't know how to calculate s1=s1+e^(-j); i=i+1; else x(i)=s/s1; i=i+1; j=1; s=0; s1=0; end end end This seems to work fine for the denominator. ANy ideas about the numerator?