Thank you, Serge !
-----Message d'origine----- De : [email protected] [mailto:[email protected]] De la part de Serge Steer Envoyé : mardi 12 février 2013 14:02 À : International users mailing list for Scilab. Objet : Re: [Scilab-users] Running average You can use the convolution (convol function) for such purpose sv=10000;v=rand(sv,1); km=5; vra_1 =convol(ones(1,2*km+1)/(2*km+1),v); vra_1=vra_1(km+1:$-km); Serge Steer Le 12/02/2013 00:08, CRETE Denis a écrit : > Hello, > I looked for a function to make a "running average", i.e. an average of a sub > vector v: > sv=10000;v=rand(sv,1); km=5; // Running average over 2*km+1 = 11 > points for i=1:size(v,'*'), > suite=i-min(i-1,km):i+min(size(v,'*')-i,km); > vra_1(i)=sum(v(suite))/size(suite,'*'); > end; > Is there a function doing already this in Scilab, or is there a more > efficient (compact/rapid) way to do this ? > I tried with sparse matrix (with a "broad diagonal"), but it is much longer: > // Build sparse matrix > spM=[]; > for i=1:sv, > for j=-km:km; > if (i+j>0 & i+j-1<sv), spM=[spM;i,i+j,1]; end; > end; > im=find(spM(:,1)==i); > spM(im,3)=1./size(im,'*'); > end; > // Calculate running average > vra_2=sparse(spM(:,1:2),spM(:,3))*v; > > Thank you in advance for any improvement. > Best regards > Denis > _______________________________________________ > users mailing list > [email protected] > http://lists.scilab.org/mailman/listinfo/users > _______________________________________________ users mailing list [email protected] http://lists.scilab.org/mailman/listinfo/users _______________________________________________ users mailing list [email protected] http://lists.scilab.org/mailman/listinfo/users
