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

Reply via email to