"dwi" wrote in message <firstname.lastname@example.org>... > "Roger Stafford" wrote in message <email@example.com>... > > "dwi" wrote in message <firstname.lastname@example.org>... > > > 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