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 :

probleme de creation de matrice


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 6
    Par défaut
    Bonjour,
    Je suis débutant en matlab, donc je pense que ma question est tres simple, mais je n'ai pourtant pas trouvé la solution.

    J'ai deux matrice
    A = [1 1; 2 2]
    et O=[1 2 3]

    et je voudrais le plus simplement possible (sans creer de boucle for) arrivé a creer la matrice

    B(:,:,1) = [1 1; 2 2]
    B(:,:,2) = [2 2; 4 4]
    B(:,:,3) = [3 3; 6 6]

    Comment faire ?
    Merci de votre aide

  2. #2
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    En gros chaque B(:,:,i) est égal à O(i) fois A.
    Ecrit comme ça ça te donne plus d'idées ?

    Sinon écrit-le nous déjà avec une boucle FOR.

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 6
    Par défaut
    Oui en effet
    B(:,:,i) = A * O(i)

    La version avec boucle for, j'en ai trouvé une :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i=1:size(O,2)
    B(:,:,i)=A*O(i)
    end
    Je voudrais savoir s'il existe une version plus performante (par indexation, ou un truc du genre)
    Merci

  4. #4
    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
    Essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    A = [1 1; 2 2]
    O=[1 2 3]
     
    O = reshape(O,1,1,[]);
     
    B = bsxfun(@times,A,O);
    Mais vu la taille de tes matrices, je doute que cela soit plus rapide

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 6
    Par défaut
    merci pour cette reponse.
    Dans la réalité ma matrice A fait environ (100x100)
    et la matrice O fait (1x10000)
    Donc, je peux peut être gangner du temps...

    J'ai une nouvelle question dans le meme genre

    serait il possible d'inverser chacun des termes de B(:,:,i) à nouveau sans passer par une boucle for

    c'est à dire obtenir la matrice
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C(:,:,i) = inv(B(:,:,i))
    Merci

  6. #6
    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
    Citation Envoyé par fantom1982 Voir le message
    serait il possible d'inverser chacun des termes de B(:,:,i)
    Pour quoi faire ?
    Quel est le but de ton étude ?

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 62
    Par défaut
    google + ndfun


    http://www.mit.edu/~pwb/matlab/ndfun/




    Citation Envoyé par fantom1982 Voir le message
    merci pour cette reponse.
    Dans la réalité ma matrice A fait environ (100x100)
    et la matrice O fait (1x10000)
    Donc, je peux peut être gangner du temps...

    J'ai une nouvelle question dans le meme genre

    serait il possible d'inverser chacun des termes de B(:,:,i) à nouveau sans passer par une boucle for

    c'est à dire obtenir la matrice
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C(:,:,i) = inv(B(:,:,i))
    Merci

Discussions similaires

  1. [FLASH MX 2004] Probleme de creation de GIF anime
    Par hedgehog dans le forum Flash
    Réponses: 5
    Dernier message: 13/03/2005, 19h07
  2. [C#] Probleme de creation de fichier avec Stream
    Par freddyboy dans le forum C#
    Réponses: 7
    Dernier message: 07/06/2004, 11h41
  3. Probleme de creation de raccourcis
    Par Sebinou dans le forum C++Builder
    Réponses: 2
    Dernier message: 06/04/2004, 18h21
  4. [LG]probleme de creation arbre binaire
    Par jsaviola dans le forum Langage
    Réponses: 2
    Dernier message: 06/01/2004, 20h57
  5. [Classpath] problème de création de setclasspath.bat
    Par worldchampion57 dans le forum Général Java
    Réponses: 7
    Dernier message: 06/05/2003, 13h32

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