Programme MatLab

Résolu
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
Configuration: Windows XP
Internet Explorer 7.0

7 réponses

  1. 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. 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
      1. 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. 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. 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. 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. 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]