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 :

Boucle for en fonction de l'année


Sujet :

MATLAB

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Boucle for en fonction de l'année
    Bonjour tout le monde,

    Je vous écris car je voudrais faire ce calcul ci dessus, pour chaque année entre 1974 et 2014 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    M22 = M2([1525:3053],[1,2]); 
    M22 = sortrows (M22,2);
    M22 = M22(:,2);
    flip(M22);
    for h = 0:0.1:8;
         length(find(M22 == 0.1+h))
    end
    Ma matrice M2 d'origine est composé de deux colonnes, la première les années et la seconde la magnitude des séismes.
    M22 correspond donc au ligne 1525 à 3053 de M2 qui est l'année 1975
    Ensuite, je trie et calcul le nombre de fois qu'il y a un événement d'une certaine magnitude (ici comprise entre 0 et 8)

    Mon premier problème :
    Pour faire cela pour chaque année, je me suis donc lancée dans une boucle for/end :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    c = M2(:,1);
    for j = 0:1:3
        M2(j) = M2([c==1974+j],[1,2]);
        M2(j) = sortrows (M2(j),2);
        M2(j) = M2(j)(:,2);
        flip(M2(j));
        for h = 0:0.1:8;
            length(find(M2(j) == 0.1+h))  
        end
    end
    (j'ai de 0 à 3 pour le moment pour tester) Cependant cela ne marche pas et m'indique : Subscript indices must either be real positive integers or logicals pour M2(j) = M2([c==1974+j],[1,2]);

    Matlab est aussi mécontent de mon : M2(j) = M2(j)(:,2);.
    Je ne vois pas comment écrire autrement cela...

    Mon second problème :
    Je voudrais renvoyer les length calculer dans un tableau pour ensuite ajouter tous les tableaux de chaque année.


    Si l'un d'entre vous aurez une piste a me fournir, ce serait avec joie.
    Merci !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Cette instruction seule : flip(M22); sans affectation ne fait rien.
    Ces lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    M22 = M2([1525:3053],[1,2]); 
    M22 = sortrows (M22,2);
    M22 = M22(:,2);
    peuvent se résumer à : M22 = sort( M2(1525:3053,2) ); (ou M22 = sort( M2(1525:3053,2), 'descend' ); pour renverser l'ordre).

    Attention, pour un tableau classique M2(j) ne représente qu'une seule valeur. Tu ne peux en aucun cas affecter un tableau dessus.
    Cette ligne length(find(M2(j) == 0.1+h)) peut se résumer à : sum(M2(j) == 0.1+h).

    Je pense que ce sujet de la FAQ pourra t'intéresser : Comment regrouper des éléments selon des valeurs communes ?

  3. #3
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    Dans ta boucle le premier élément est j=0. Or tu ne peux pas faire M2(0) vu que en Matlab le premier élément d'un tableau est 1.

  4. #4
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour ces informations, je vais transformer tout ca!

Discussions similaires

  1. Boucle for en fonction d'une valeur de champ
    Par LutorCorp dans le forum jQuery
    Réponses: 15
    Dernier message: 04/03/2014, 15h24
  2. Boucle for et fonction
    Par helkøwsky dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 22/01/2012, 12h06
  3. boucle "for" ne fonctione pas pourquoi ?
    Par flysurfer dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 24/04/2008, 12h48
  4. Réponses: 18
    Dernier message: 25/07/2007, 12h34
  5. Fonction system() dans une boucle for
    Par banban56 dans le forum C
    Réponses: 3
    Dernier message: 16/06/2007, 18h48

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