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 :

Creer des classes à partir d'une matrice.


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2011
    Messages : 3
    Par défaut Creer des classes à partir d'une matrice.
    Bonjour,

    Je possède une matrice de 16584 lignes et 4 colonnes.
    J'ai séparer chaque colonne en matrice 16584 lignes. (donc je me retrouve avec 4 matrices : M1=vent, M2=direction, M3=température, M4=vitesse)

    Mon problème :
    Je souhaite regrouper par classe de 45° la matrice M2, sachant que les valeurs varies entre 0 et 360, j’obtiendrais 8 classes.
    Voila la formule utilisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    clas90=find(direction>45 & direction<=90) %exemple pour le calcul de la classe allant de 46° à 90°. 
    % je fais de même pour chaque classe jusqu’à en avoir 8.
    Ensuite je calcul la fréquence de chaque classe obtenue precedement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cla90=dir(clas90); %je récupère les valeurs initiales
    freq90=(length(cla90)/16584)*100; %je fais la fréquence.
    % Je fais de même pour les 8 classes.
    J'obtiens donc 8 valeurs que je met dans une variable freq :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    freq=[freq45 freq90 freq135 freq180 freq225 freq270 freq315 freq360]
    Maintenant je cherche à connaitre quelle classe à la plus grande fréquence ?
    Si j'utilise la fonction 'max(X)', je trouve une valeur, alors que moi je cherche à savoir le nom de la variable associé à 'max(freq)'. Quelle est la méthode ?

    Deuxième problème :
    A la base mon fichier comporte le relevé météo par heure durant Xjours.
    Donc chaque ligne contient les infos de température, vitesse, direction, numéros du relevé.
    Après avoir mis la matrice direction de vent en classe de 45°, je cherche à calculer la vitesse moyenne de chaque classe.
    Et la je galère ....
    J'ai essayé de créer une nouvelle matrice a 2 colonnes contenant sur la 1er colonne la direction du vent et sur la deuxième la vitesse.
    Je refais ma fonction 'find' sur cette matrice, mais il me trouve TOUTES les valeurs plus petites que 45 (par exemple), du coup je me retrouve avec une matrice 1 colonne avec les directions de vent et les vitesses inférieures à 45. Or, je veux avoir une matrice 2 colonnes avec en premier colonne les directions de vent inférieur à 45 et sur la deuxième les vitesses associées (qui peuvent être plus grande que 45.).

    Après avoir calculer la vitesse moyenne, j'ai aussi besoin de connaitre l’écart type...

    Avez-vous compris mes problèmes ?

    Quelqu'un peut-il m’éclairer ? parce que la Matlab me rend super fous !!

    Merci!
    Cordialement.

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 106
    Par défaut
    Citation Envoyé par seboututou Voir le message

    Je possède une matrice de 16584 lignes et 4 colonnes.
    J'ai séparer chaque colonne en matrice 16584 lignes. (donc je me retrouve avec 4 matrices : M1=vent, M2=direction, M3=température, M4=vitesse)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    clas90=find(direction>45 & direction<=90) %exemple pour le calcul de la classe allant de 46° à 90°. 
    % je fais de même pour chaque classe jusqu’à en avoir 8.
    find te renvoie normalement les indices des valeurs correspondant à des bornes indiquées. Essaie comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    indiceClasse90 = f(direction>45)&(direction<=90);
    clas90 = [direction(indiceClasse90); vitesse(indiceClasse90)];%matrice 2 colonnes contenant la direction et la vitesse.
    Citation Envoyé par seboututou Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    freq=[freq45 freq90 freq135 freq180 freq225 freq270 freq315 freq360]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    [Position freqmax] = max(freq)
    Position te renvoie la position de la fréquence maximal dans ton vecteur freq. Tu pourras associer cette position à la classe correspondante.

    Pour la moyenne et l'écart type, il y a les fonctions mean et std de matlab.

Discussions similaires

  1. Creer des Liste à partir d'une liste
    Par pi_hellz dans le forum Général Python
    Réponses: 5
    Dernier message: 26/09/2013, 09h03
  2. Comment dégager des vecteurs à partir d'une matrice en Java ?
    Par FATENMRABET dans le forum Général Java
    Réponses: 3
    Dernier message: 19/09/2013, 09h49
  3. Réponses: 1
    Dernier message: 07/03/2012, 09h10
  4. appel des elements d'une classe à partir d'une autre
    Par oceane751 dans le forum Langage
    Réponses: 4
    Dernier message: 02/01/2008, 21h52
  5. Générer des classes à partir d'une BDD
    Par christo.pop dans le forum Persistance des données
    Réponses: 2
    Dernier message: 27/03/2007, 09h11

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