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 :

Comment faire une interpolation de matrice afin de créer un contour


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 18
    Points : 11
    Points
    11
    Par défaut Comment faire une interpolation de matrice afin de créer un contour
    bonjour à tous,

    je suis débutant en matlab et j'ai un problème pour faire un contour!!!
    je pense que certains vont trouver ça évident mais ca fait longtemps que je suis dessus et je ne trouve pas.

    le programme est le suivant:

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
     
     
    %analyse des données d'un instrument, fichier .txt avec caractéristique de
    %l'eau de mer
     
     
    p=input('number of files to load: ');       % interface permettant de loader directement les .txt
    save p
     
    tps=[];
     
    for i=1:p
     
        [FileName,PathName] = uigetfile('*.txt','Select the M-file'); %permet d'aller directement chercher les fichier .txt
        file{i}=FileName;                                           %rentre les fichier dans un tableau file
        fid = fopen(file{i});                      
     
     
        data{i}= fscanf(fid,'%f',[14,inf]);                 %permet d'ouvrir les txt dans le sens voulu...
        data{i}=data{i}';                                   %rentre les différents fichiers dans une variable
        fclose(fid);
        DT{i}=datenum(data{i}(:,11),data{i}(:,10),data{i}(:,9),data{i}(:,12),data{i}(:,13),data{i}(:,14)); %transforme la date en jour julian
        str{i}=datestr(DT{i},6);                        % transfome la date au format voulu : 06/08
     
        [m{i},bot{i}]=min(-data{i}(:,8));                %arrete le fichier au minimum de la profondeur (enlève les valeurs de la remontée de l'instrument
        depth{i}=-data{i}(:,8);                         %rentre les différentes carctéristiques de l'eau dans des variables
        salinity{i}=data{i}(:,3);
        density{i}=data{i}(:,7);
        temperature{i}=data{i}(:,4);
        turbidity{i}=data{i}(:,6);
        chlorophyll{i}=data{i}(:,5);
     
        adata{i}=data{i}(1:bot{i},:).';                     %construit la matrice en enlevant les valeurs de la remontée
        Z(1:bot{i},i)=salinity{i}(1:bot{i});                %construit la matrice des valeurs de salinité par colonne
        temps{i}=str{i}(1,1:5)                              %essaie de construire un vecteur temps en str mais marche pas très bien
    end
     
    bigmatrix=[adata{:}].';                             %concatène les matrices des différents fichiers en une grosse matrice
     
    minbot=-max(bigmatrix(:,8));                        %calcul la valeur minimale de la profondeur
     
     
     
     
     
     
    % [X,Y] = meshgrid(:,0:0,01:minbot);
    % Z =[adata{:}].';
    % ;
    % [XI,YI] = meshgrid(-3:.125:3);
    % ZI = interp2(X,Y,Z,XI,YI);
    % mesh(X,Y,Z), hold, mesh(XI,YI,ZI+15)
    % hold off
    % axis([-3 3 -3 3 -5 20])
    en fait je veux faire un contour sur la matrice des salinités en fonction du temps en X et de la profondeur en Y

    le problème est que le temps est un vecteur qui contient autant de valeur qu'il y a de fichiers: chaque fichier correspond à une date précise
    le deuxième problème est que les fichier n'ont pas toute la même profondeur donc pas la meme longueur...

    j'ai essayé d'interpoler ma matrice avec interp2 mais je n'y arrive pas...

    si quelqu'un a une idée je lui en serai très reconnaissant.
    merci à tous

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 316
    Points : 52 951
    Points
    52 951
    Par défaut
    Si tous les fichiers contiennent le même nombre de données, alors il est plus facile d'utiliser une matrice plutôt qu'un tableau de cellule pour "data".

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    le problème est bien là... y a pas deux fichiers qui ont la même longueur...d'où le problème lorsqu'il faut interpoler et faire le contour...

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 316
    Points : 52 951
    Points
    52 951
    Par défaut
    Donc si tu ne les tocke pas dans une seule matrice de taille fixe, tu ne pourras pas faire ton interpolation.

Discussions similaires

  1. Comment faire une matrice?
    Par saeba357 dans le forum Langage
    Réponses: 1
    Dernier message: 19/11/2007, 13h13
  2. Réponses: 2
    Dernier message: 03/05/2004, 12h13
  3. [VB6] Comment faire une fonction qui renvoie 2 résultats
    Par tazarine dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 15/01/2004, 00h13
  4. Réponses: 10
    Dernier message: 10/10/2003, 14h25

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