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 :

Suite numérique


Sujet :

MATLAB

Vue hybride

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 21
    Par défaut Suite numérique
    Voila, j'ai un probleme sur lequel je bloque depuis quelques jours. En fait j'ai une matrice de taille 4000000*2 et je voudrais la partitionner en matrices de 2000*2, soit en 2000 matrices. Ensuite je voudrais adittionner toutes ces matrices entre elles pour en donner une de 2000*2. Voici je code que j'ai tapé:
    """
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    n=3998000
    for m=2000:2000:n
     B=data(1:2000,1:2)+data(1+(m:n):2000+(m:n),1:2)
    end
    """
    Mais comme attendu il ne me ramène qu'à la derniere somme de la matrice data(1:2000,1:2)+data(3998001:4000000,1:2)
    Je sais pas quoi faire!
    Merci

  2. #2
    Membre chevronné
    Avatar de Dam2227
    Inscrit en
    Juin 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2007
    Messages : 343
    Par défaut
    Bonjour
    Voilà un code qui marche (et qui peut surement etre amélioré pour gagner du temps)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    A=ones(4000000,2);
    C=zeros(2000,2);
    g=1;
     
    for i=1:1:2000
    B=zeros(2000,2);
    l=0;
    for j=g:1:g+1999
    l=l+1;
    B(l,:)=A(j,:);
    end
    g=g+1999;
    C=C+B;
    end

  3. #3
    Membre chevronné
    Avatar de Dam2227
    Inscrit en
    Juin 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2007
    Messages : 343
    Par défaut
    En fait y'a beaucoup plus simple et pus rapide!!!
    DSL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    l=1;
    for i=1:1:2000
    C=C+A(l:l+1999,1:2);
    l=l+1999;
    end
    ou alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for i=1:1999:3998000
    C=C+A(i:i+1999,1:2);
    end
    ça m'apprendra a repondre trop vite

    La matrice C est bien une matrice qui fait 2000*2 et dont chacun des termes vaut 2000, ce qui est bien l'adition de 2000 'matrices' dont chacun des termes vaut 1 et qui viennent du découpage de A.

  4. #4
    Membre chevronné
    Avatar de Dam2227
    Inscrit en
    Juin 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2007
    Messages : 343
    Par défaut
    Citation Envoyé par Dam2227
    La matrice C est bien une matrice qui fait 2000*2 et dont chacun des termes vaut 2000
    C'est ce que j'ai dit

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 21
    Par défaut
    Autant pour moi! J'ai pas tout bien lu!
    Pardon!
    et merci pour votre aide

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 21
    Par défaut
    Donc si je mets ma matrice data à la place de A ça fonctionnera?

  7. #7
    Membre chevronné
    Avatar de Dam2227
    Inscrit en
    Juin 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2007
    Messages : 343
    Par défaut
    Normalement oui. Si elle fait bien 4000000*2, ça devrait marcher. A toi de nous le dire

    EDIT : juste après le 'ou alors' de mon dernier message, ce n'est pas
    mais

    C'est dur de recopier d'une machine à l'autre!

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 21
    Par défaut
    Par contre vous dites que la matrice finale 2000*2 présente des terme valant 1 mais si la matrice initiale 4000000*2 présente déjà des termes valant, si je la découpe et que j'aditionne chacun des 2000*2 matrices, ma matrice finale doit présenter des termes valant 2000 car 2000*1!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Regex pour une suite numérique.
    Par psk75 dans le forum Langage
    Réponses: 2
    Dernier message: 21/06/2011, 15h54
  2. liste liée en suite numérique
    Par misakilou dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 22/10/2009, 17h30
  3. Réponses: 6
    Dernier message: 10/01/2009, 21h18
  4. Numéro manquant d'une suite numérique
    Par afrodje dans le forum Langage SQL
    Réponses: 4
    Dernier message: 19/11/2008, 17h45
  5. Réponses: 3
    Dernier message: 10/10/2007, 17h24

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