2017-10-07 13 views
0

Je suis tryng pour faire un nuage de points dans une boucle for où je ne trace que les derniers points. Mais en regardant mes points tracés, ils sont les points obtenus de mon équation.Scilab scatter plot dans une boucle for

Que puis-je faire pour obtenir et tracer les derniers points?

Voici le code:

m=1000 
z=4000 
T=200 
pr=101325 
sigma=0.24 
cc=sigma*10^(-18) 
lambda=((1.38*10^(-23)*T)/(sqrt(2)*pr*cc)) 
p=%pi*2 
for I=1:z 
theta=(grand(m,1,"unf",0,p)); 
cx= cumsum(lambda*cos(theta)); 
cy= cumsum(lambda*sin(theta)); 
scatter((cx,cy)) 
xlabel(["x"]); 
ylabel("y"); 
title("Partilcle Distribution"); 
end 
+0

Pourriez-vous améliorer votre question? Que voulez-vous dire par "derniers points"? Je comprends que vous avez une boucle for qui calcule '' cx'' et '' cy''. Qu'est-ce que vous voulez est de ne choisir que les dernières valeurs (la 1000e valeur) dans chaque boucle de ces matrices et les tracer ensemble? – luispauloml

+0

Oui, c'est exactement ce que je voulais dire !! –

Répondre

0

Si ce que vous voulez est de prendre les dernières valeurs de cx et cy dans chaque boucle, une option est de créer de nouveaux tableaux pour stocker ces valeurs et de les tracer en dehors de la boucle, comme ceci:

... 
x = zeros(1,z); //row matrix filled with zeros 
y = zeros(1,z); //row matrix filled with zeros 
for I=1:z 
    theta = grand(m,1,"unf",0,p); 
    cx = cumsum(lambda*cos(theta)); 
    cy = cumsum(lambda*sin(theta)); 

    //overwriting values 
    x(I) = cx($); //the dollar sign ($) returns the last element 
    y(I) = cy($); //of a row or a column in a matrix 
end 
scatter(x,y); 
xlabel("x"); 
ylabel("y"); 
title("Partilcle Distribution");