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 :

valeur d'un tableau immédiatement au dessus


Sujet :

MATLAB

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut valeur d'un tableau immédiatement au dessus
    Salut tous,

    désolé pour le titre pourrit mais je ne savais pas trop comment appeler ceci...

    Voici le contexte de mon probleme :

    j'ai un tableau de type CELL dont voici les dimensions : tableau{30000,2}.
    Dans ce tableau chaque case contient une matrice de dimension Nx2 (avec N compris entre 0 et 2000).

    On a matrice(:,1) qui contient des "temps" et matrice(:,2) qui contient des résultats.

    Voici ce que je veux faire :

    j'ai une matrice qui s'appel tempsResultat qui contient dans sa première colonne aussi des temps et je voudrais écrire dans la deuxième colonne les résultats qui correspondent à ces temps (que je choppe dans la variable matrice que j'ai donné plus haut).

    Le soucis est que les temps de tempsResultat ne sont pas les même que ceux qui se trouvent dans la variable matrice

    du coup, le code que j'avais fait ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    for g=1:1:tailleTableau
        %je stocke ma matrice qui a dans la case {g,1} ds variable
        %nommée tempsResultats
        tempsResultats=Tableau{g,1};
        %je copie les résultats qui correspondent aux temps qui m'intéressent  
        %dans le fichier texte             
        for m=1:1:length(tempsResultats(:,1))
            if (tempsResultats(m,1)==tempsMinteresse(b,1))
                fprintf(fidVTK,'%g\n',tempsResultats(m,2))
            end			
        end
    end
    Ce qu'il faut faire mais que je n'arrive pas :

    En fait ce que j'ai fais plus haut c'est chercher le temps qui m'interesse dans la matrice "tempsResultats" et copier le résutats correspondant dans le fichier texte.
    Le probleme de ceci est que ça ne marche que si les temps qui m'interessent se trouvent aussi dans la matrice "tempsResultats" or ce n'est pas toujours le cas pour moi

    du coup je ne vois pas trop comment faire de façon un peu prêt optimisée avec les outils standard

    je dis de façon un peu pret optimisée car je manipule de très gros matrices/tableau et la seul solution que je vois moi c'est réecrire toutes les matrice en y insérant mes temps qui m'intéressent pui faire une interpolation linéaire et je pourrais ensuite utiliser ce code.

    Le soucis de ceci c'est que je vais recopier toutes les matrices et àa va demander un temps très important alors que je suis certain qu'il y a une autre méthode.
    => en fait je pense qu'il faudrait détecter qu'elles sont les valeurs qui encadrent le temps qui m'intéresse et faire direct l'interpolation sans à avoir à recopier toute la matrice...

    pourriez vous m'aidez pour faire ceci s'il vous plait ?

    merci d'avance

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut
    j'étais assez confiant quand j'ai fais ce code :

    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
    16
    17
    18
    19
    20
    21
     
    for g=1:1:tailleTableau
    		tempsResultats=Tableau{g,1};
            tempsDetecte=0; erreur=0; m=1;
    		while ( tempsDetecte==0 && erreur==0 && m<length(tempsResultats(:,1)) )
                if ( m<length(tempsResultats(:,1)) ) %comme on a +1 ci dessous
                   if ( tempsMinteresse(b,1) >= tempsResultats(m,1) && tempsMinteresse(b,1) < tempsResultats(m+1,1) )
                        if (tempsMinteresse(b,1)==tempsResultats(m,1))
                            fprintf(fidVTK,'%g\n',tempsResultats(m,2));
                        else %interpolation linéaire (dvlpt Taylor) Y=Ya+(X-Xa).(Yb-Ya)/(Xb-Xa)
                            fprintf( fidVTK,'%g\n',tempsResultats(m,2)+(tempsMinteresse(b,1)-tempsResultats(m,1))*((tempsResultats(m+1,2)-tempsResultats(m,2))/(tempsResultats(m+1,1)-tempsResultats(m,1))) );
                        end
                        tempsDetecte=1;
                   end
                else %produit en croix pour dernière composante
                    fprintf(fidVTK,'%g\n',(tempsMinteresse(b,1)*tempsResultats(m,2))/tempsResultats(m,1));
                    tempsDetecte=1;
                end		
                m=m+1;
            end
    	end
    mais il s'avère que ça n'écrit rien dans mes fichiers texte
    il semblerai que la variable "tempsDetecte" soit toujours nulle

Discussions similaires

  1. [VB6] recuperer des valeurs ds un tableau html avec vb!!
    Par leo13 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 11/12/2004, 13h02
  2. comparer les valeurs d'un tableau
    Par nicerico dans le forum ASP
    Réponses: 4
    Dernier message: 19/08/2004, 11h20
  3. Compter les valeurs d'un tableau
    Par leeloo076 dans le forum ASP
    Réponses: 6
    Dernier message: 30/03/2004, 13h29
  4. Récupération de valeurs d'un tableau
    Par leeloo076 dans le forum ASP
    Réponses: 12
    Dernier message: 25/03/2004, 10h59
  5. Décaler des valeurs dans un tableau
    Par sh2003 dans le forum Langage
    Réponses: 6
    Dernier message: 20/03/2004, 16h01

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