[scilab-Users] aide programmation scilab

Michaël Baudin michael.baudin at scilab.org
Thu Apr 29 14:23:37 CEST 2010


Dear Pauline,

Please switch to english, so that other non-french users can
understand you.

I do not understand your scientific problem, I will simply
give you some practical advices.
It is likely that you are using an integer index n
which is either too large or too small with respect to the
size of your array vx.
The line

vx=zeros(1,1);for n=1:3000 
vx(:,n+1)=vx(n)+(ax(:,n+1)-ax(:,n))*.(0.01/2);end;

which generates the error message is too long: you cannot
trace back to the problem.
What happens if you run this ?

vx=zeros(1,1);
for n=1:3000
  vx(:,n+1)=vx(n)+(ax(:,n+1)-ax(:,n))*.(0.01/2);
end;

If you do not understand what is the problem,
you can insert a pause in the loop and directly play with
your algorithm with resume (which will make you go
on to the next loop) and abort (which will make you
go out of the loop) :

vx=zeros(1,1);
for n=1:3000
  pause
  vx(:,n+1)=vx(n)+(ax(:,n+1)-ax(:,n))*.(0.01/2);
end;

Hope this helps.

Best regards,

Michaël


Pauline F a écrit :
>
> Bonjour,
>
>  Je me permets de vous contacter suite à des recherches sur internet 
> pour faire fonctionner le logiciel Scilab. J'espère vivement que vous 
> pourrez m'apporter votre aide afin que je puisse continuer mon programme.
>
> Je suis actuellement en stage et effectue l’étude d’une accélération 
> avec le logiciel Scilab. Je dois extraire les valeurs de 
> l’accélération à partir d’un dossier excel et les  intégrer afin 
> d’obtenir la vitesse et le déplacement. Pour cela il me faut utiliser 
> la méthode d’intégration à partir de trapèze en partant non pas du 
> début de la courbe mais du point ou commence le mouvement c'est-à-dire 
> lorsque l’écart type σ de la moyenne des données dépasse 3σ. (Cf 
> schéma en annexe).
>
>  Je débute avec Scilab. Je suis pour le moment parvenue à extraire 
> toutes les valeurs du tableau excel :
>
>  
>
> -->chdir('D:\accéléromètres stage\');
>
>  -->Feuille = readxls('scilab excel.xls');
>
>  -->Dxls  = Feuille(1).value;
>
>  -->T=Dxls(:,1);
>
>  -->ax=Dxls(:,2);
>
>  -->ay=Dxls(:,3);
>
>  -->az=Dxls(:,4);
>
>  
>
> Ensuite j’ai voulu commencer par intégrer chaque points pour obtenir 
> la valeur de la vitesse (en x ici) j’ai dans un premier cas utilisé :
>
>  
>
> vx=0; for k=ax vx=vx+inttrap(k,T);end;
>
>  
>
> Là il n’y a apparemment pas d’erreur cependant lorsque je veux 
> afficher la courbe de vx en fonction de T rien n’apparaît.
>
> Ensuite j’utilise la formule d’intégration par la méthode des trapèzes :
>
>  
>
> vx=zeros(1,1);for n=1:3000 
> vx(:,n+1)=vx(n)+(ax(:,n+1)-ax(:,n))*.(0.01/2);end;
>
>  
>
> Et là erreur 21 ! Erreur d’index….
>
>  
>
> Je n’arrive pas à comprendre mes erreurs. Depuis plusieurs jours 
> j’essaie de me documenter mais le programme reste toujours au même niveau.
>
> De plus j’ai supprimé ici toutes les premières valeurs manuellement 
> alors qu’il me faudrait un système qui définisse automatiquement le 
> zéro à l’endroit où le mouvement commence. Comment faire ? Je pense 
> utiliser  une boucle if en calculant l’écart type à chaque fois et en 
> déclarant que si cet écart type est égal à trois fois celui qui 
> précède, la valeur de la vitesse est nulle. Mais comment faire pour 
> définir cette valeur comme le départ du calcul de la vitesse ? Faut il 
> inclure la boucle for dans le if ? Mais dans ce cas comment le faire ? 
> En espérant que vous pourrez me venir en aide. Merci d’avance pour 
> votre réponse.
>
> Cordialement,
>
>  FABRE Pauline.
>
>
> ------------------------------------------------------------------------
>


-- 
Michaël Baudin
Ingénieur de développement
michael.baudin at scilab.org
-------------------------
Consortium Scilab - Digiteo
Domaine de Voluceau - Rocquencourt
B.P. 105 - 78153 Le Chesnay Cedex
Tel. : 01 39 63 56 87 - Fax : 01 39 63 55 94





More information about the users mailing list