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.
    "La vraie grandeur se mesure par la liberté que vous donnez aux autres, et non par votre capacité à les contraindre de faire ce que vous voulez." Larry Wall, concepteur de Perl.

  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