Tracer des lignes brisées sur matlab

Résolu/Fermé
emma_gala Messages postés 4 Date d'inscription mardi 3 juin 2008 Statut Membre Dernière intervention 1 août 2008 - 3 juin 2008 à 16:17
mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010 - 4 juin 2008 à 10:44
Bonjour à tous.

Je souhaite tracer des lignes brisées sur Matlab, en prenant à chaque fois des points d'origine aléatoire, et en mettant une contrainte sur l'angle entre deux bouts segments... j'espère que vous voyez ce que je veux dire :$ :$ :$

Voilà ce que j'ai écris, mais qui ne marche pas (Matlab n'arrive pas à le compiller) :

N=2;
Lp=0.00000001;

x1 = rand ; % abscisse de M
y1 = rand ; % ordonnee de M
% M = [x1 y1] point de départ 2D
% N = [x2b y2b]

n=0;

while (n<N)
x2 = rand ;
y2 = rand ;
T = pi/4 ;
while (T>0) && (T<pi/2)
T = (atan((y2-y1)/(x2-x1))) ;
x2b = abs(x1 + Lp*cos(T)-1) ;
y2b = abs(y1 + Lp*sin(T)-1) ;
end
x1=x2b ;
y1=y2b ;
n=n+1 ;
plot([x1 x2b],[y1 y2b], 'k') ;

end


Merci d'avance
A voir également:

1 réponse

mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010 6
3 juin 2008 à 16:32
salut, je ne pense pas que tu utilise correctement la fonction rand:

__________________________________________________________________________________________
* Nombres aléatoires :

Les nombres aléatoires peuvent être générés par la fonction ‘rand’. Son expression est ‘rand(n)’ où n est le rang de la matrice.
Si n=3 par exemple, rand(3) va générer 3 lignes et 3 colonnes de la matrice dont les coefficients sont aléatoires et compris entre 0 et 1.

Exemple :

>> rand(3)
ans =
0.4154 0.0150 0.9901
0.3050 0.7680 0.7889
0.8744 0.9708 0.4387
__________________________________________________________________________________________
essaye avec rand(1); ou renseigen toi sur randn() je ne me souviens plus de la différence entre les deux.

A+ Mich
0
emma_gala Messages postés 4 Date d'inscription mardi 3 juin 2008 Statut Membre Dernière intervention 1 août 2008
4 juin 2008 à 10:17
Merci Mich ...

Effectivement j'avais une une erreur dans l'utilisation de random... je me suis renduse compte que j'en avais également une au niveau de la boucle, qui faisait que le programme tournait infiniment sans jamais arriver au bout ...

Le problème c'est que maintenant, j'ai juste un écran blanc qui s'affiche :(
0
mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010 6 > emma_gala Messages postés 4 Date d'inscription mardi 3 juin 2008 Statut Membre Dernière intervention 1 août 2008
4 juin 2008 à 10:44
salut emma

Je pense que ton plot doit en fait afficher deux points aux coordonnées mise entre crochets.

si tu veux plusieurs tracé sur la même figure tu dois les tracés une par une en mettant hold on ; entre chaque tracé.

figure;
plot([vecteur des abscisses1],[vecteur de coordonnées1],'k');
hold on;
plot([vecteur des abscisses2],[vecteur de coordonnées2],'k');


dans ton cas x1=x2b et y1=y2b tu ne dois pas faire le plot avant?

boucle{
...
plot(......)
hold on;
x1=x2b;
y1=y2b;
}

après je pense que les vecteurs d'abscisse et d'ordonnée doivent etre de même taille et des vecteurs colonne mais ca c'est moins sur.
pour transposer sur matlab tu utilise '

vecteur colonne de [a b c] = [a b c ]'


Mich
0