Programme MatLab

Résolu/Fermé
siaf - 16 oct. 2008 à 11:33
Sacabouffe Messages postés 9427 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 29 mai 2009 - 18 oct. 2008 à 12:12
Bonjour,
je veux bien programmer
TETA(i)=acos(((x(i)-x(i-1))*(x(i+1)-x(i)))/(abs(((x(i)-x(i-1))*(x(i+1)-x(i))))));sous matlab sachant que x est une matrice merci d'avance

7 réponses

Sacabouffe Messages postés 9427 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 29 mai 2009 1 835
18 oct. 2008 à 10:14
Salut

Je comprends pas, tu l'as le vecteur TETA là avec ton programme.
Par contre, il y a des coquilles, une imperfection et une imprécision, c'est plutôt
x=10*(1:6);
TETA=zeros(1,6);
for p=1:6
TETA(p)=acos(((x(p)-x(p-1))*(x(p+1)-x(p)))/(abs(((x(p)-x(p-1­))*(x(p+1)-x(p))))));
end
1) Évite d'utiliser i qui est le le nombre complexe i sous MatLab, ça peut conduire à des bugs dans des programmes plus compliqués
2) La ligne TETA=[TETA TETA(p)] est inutile et conduit à un truc faux
3) Il faut dire ce que sont x(0) et x(7)

De plus vaut mieux faire ça sans boucle, c'est tout aussi bien.
TETA=acos(((x-circshift(x,[0 1])).*(circshift(x,[0 -1])-x)))./(abs(((x-circshift(x,[0 1])).*(circshift(x,[0 -1])-x))));
Et pour finir, il y a pas grand utilité à programmer le vecteur TETA sous MatLab. On a ∀ p Є [2;5], TETA(p) = acos(100)/100^2
1
Sacabouffe Messages postés 9427 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 29 mai 2009 1 835
16 oct. 2008 à 13:25
Salut
Nous sommes heureux de savoir que tu veux bien programmer cette équation, c'est une grande nouvelle et nous t'en félicitons de tout notre cœur et de toute notre âme.
Tu pourras écrire le programme ici quand tu l'auras fait si ça te fait plaisir.
Bon après-midi
0
siaff Messages postés 3 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 18 octobre 2008
17 oct. 2008 à 17:08
merci pour le cmmentaire
mais reellement mon pb que j'ai pas obtenu la matrice de sortie qui est TETA
par exemple si je vais entrée la matrice x=[10 20 30 40 50];
-1
Sacabouffe Messages postés 9427 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 29 mai 2009 1 835
17 oct. 2008 à 17:13
Et donc... quelle est la question ?
Où est-ce que ça coince dans le programme que t'as commencé à écrire ?
Donne-le pour qu'on puisse le débugguer...
-1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
siaff Messages postés 3 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 18 octobre 2008
18 oct. 2008 à 10:04
le programme
x=[10 20 30 40 50 60]
for i=1:10:40
TETA(i)=acos(((x(i)-x(i-1))*(x(i+1)-x(i)))/(abs(((x(i)-x(i-1))*(x(i+1)-x(i))))))
TETA=[TETA TETA(i)]
end
TETA
je veux bien obtenir la matrice teta
-1
siaff Messages postés 3 Date d'inscription jeudi 16 octobre 2008 Statut Membre Dernière intervention 18 octobre 2008
18 oct. 2008 à 12:08
salut
merci pour votre aide

je veux obtenir la matrice teta
j'ai trois matrice x y et z qui represente le corrdonnes des points dans 'espace
alor je veux obtenir la matrice teta qui represente l'angle entre trois points x(p-1) x(p) et x(p+1)

circshift fait quoi cette fct??
-1
Sacabouffe Messages postés 9427 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 29 mai 2009 1 835
18 oct. 2008 à 12:12
Tu tapes help circshift ou doc circshift sous MatLab.
C'est pour permuter circulairement les éléments d'une matrice.
Dans l'exemple précédent :
x = [10 20 30 40 50 60]
-> circshift(x,[0 1]) = [60 10 20 30 40 50]
-> circshift(x,[0 -1]) = [20 30 40 50 60 10]
-1