question Matlab

Bonjour,

J'ai une famille de $N$ vecteurs colonne $u_i$ ($i$ allant de 1 à $N$), tous de même taille (de longueur $n$). Je voudrais calculer la somme des matrices $u_iu'_i$ (somme de $N$ matrices $n \times n$, et "$'$" signifie transposée).
$$
\sum_{i=1}^N u_i u'_i
$$

Comme $N$ et $n$ sont grands, je voudrais éviter une boucle en faisant un calcul matriciel intelligent.

Auriez-vous une proposition ?

Un grand merci

Réponses

  • Bonjour,

    Je n'ai pas très bien compris ton problème, mais ce que je peux dire c'est qu'avec matlab mieux vaut utiliser les fonctions sum et l'opérateur : .

    Un conseil également : si le temps de calcul est important, tu aurais intérêt à creer un exécutable matlab compilé (je ne l'ai jamais fait mais c'est décrit dans la doc).

    Sinon tu as des codes sources en C dans l'ouvrage "Numerical Recipes in C" disponible en ligne dont tu peux t'inspirer.

    Bonne chance
  • Tu penses que la fonction sum est plus rapide qu'une boucle ?
  • Sasha,

    Je pense que matlab est optimisé pour gérer des matrices de manière rapide. De plus, c'est un langage interprété (le texte des programmes sources est analysé puis des fonctions compilées -en C je crois- sont exécutées). Par conséquent, avec matlab il vaut mieux toujours utiliser les fonctions déjà implémentées en espérant que les personnes qui ont programmé matlab étaient compétentes... Si tu as des doutes, utilise par exemple la fonction "cputime" afin de connaître la rapidité d'exécutioin de ton programme.

    Re-bonne chance!

    El tyrano
Connectez-vous ou Inscrivez-vous pour répondre.