IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Opération sur matrices sans boucle


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 21
    Par défaut Opération sur matrices sans boucle
    Bonjour,

    Alors voilà, j'aimerai effectuer cette opération:
    j'ai un vecteur de scalaire (scal) pour T observations.
    Pour T observations j'ai une matrice B 2*T et sa transposée T*2.

    J'aimerai faire la somme allant de 1 à T de scal(t)*Bt*'Bt.

    J'ai pensé à une boucle:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for t = 1:T,
        A = A + scal(t)*B(:,t)*B(:,t)'
    end
    Mais Matlab n'aime pas les boucles.

    Y a t'il un moyen de faire plus simple?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    A = sum(scal(1:Tprim)*dparB(:,1:Tprim)*dparB(:,1:Tprim)');
    Ne fonctionne pas car il y a un problème de dimension entre le scal et la matrice ce que je comprend parfaitement.

    Merci d'avance,

    cordialement

    SpacedCb

    PS: je n'ai pas réussi à faire du code latex, ça n'est pas possible sur le fofo?

    Edit: pour ce qui est de la multiplication, je veux que chaque observation de ma matrice B soit multiplié par le scalaire correspondant mais pour chaque ligne) B = [scal(1)*B(1,1) ... scal(T)*B(1,T) ; scal(1)*B2(2,1) ... scal(T)*B(2,T)]

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Tu peux essayer avec la fonction bsxfun :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    scal = [1 10 100 1000]
     
    B = rand(3,4)
     
    bsxfun(@times,B,scal)

Discussions similaires

  1. [Débutant] Plot/Extraction data avec condition sur texte sans boucle
    Par hervé_débutant dans le forum MATLAB
    Réponses: 3
    Dernier message: 02/12/2009, 16h22
  2. opération sur matrice
    Par shirya dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 02/03/2008, 16h27
  3. [débutant] opérations sur matrices
    Par bendamen dans le forum Langage
    Réponses: 8
    Dernier message: 10/05/2007, 06h50
  4. Comparaison de deux matrices sans boucle for
    Par zicos dans le forum MATLAB
    Réponses: 8
    Dernier message: 04/05/2007, 18h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo