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 :

Lire les SEG-Y


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Par défaut Lire les SEG-Y
    Bonjour,

    J'aimerais savoir si il était possible de lire le format SEG-Y et si oui, comment ?

    J'ai vu sur google une fonction READSEGY mais je ne l'ai pas et me demandais si il n'y en avait pas une incrémenté directement sur Matlab (enfin ma version)

    Merci

    PS : le format SEG-Y est un format binaire défini (je ne sais pas, en revanche si il en existe plusieurs sortes) fréquemment utilisé en sismique.

  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 317
    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 317
    Par défaut
    Citation Envoyé par Newenda Voir le message
    J'ai vu sur google une fonction READSEGY mais je ne l'ai pas
    Enregistre simplement le fichier html et change l'extension en m

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Par défaut
    Oui merci, je pensais faire ça mais je ne suis pas un adepte des programmes volants. Enfin je pense que cela va être nécessaire.

    Cependant j'ai trouvé un pack de .m pour traiter les SEG-Y

    Pour l'installer dans le système local, il faut apparemment faire ceci :


    1.2. Global Installation

    For a system wide installation add the following line (substituting the location of the directory) Pour une installation système, ajoutez la ligne suivante (en remplaçant l'emplacement du répertoire)

    >> addpath /usr/share/matlab/SegyMAT -begin >> AddPath / usr / share / matlab / SegyMAT-begin
    >> addpath /usr/share/matlab/SegyMAT/GUI -begin >> AddPath / usr / share / matlab / SegyMAT / GUI-begin

    to pathdef.m , usually located in $MATLAB_INSTALL/toolbox/local/pathdef.m à pathdef.m habituellement situés dans $MATLAB_INSTALL/toolbox/local/pathdef.m
    Mais voilà, mon pathdef.m a plutôt cette forme là :

    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
    function p = pathdef
    %PATHDEF Search path defaults.
    %   PATHDEF returns a string that can be used as input to MATLABPATH
    %   in order to set the path.
     
     
    %   Copyright 1984-2002 The MathWorks, Inc.
    %   $Revision: 1.4.2.1 $ $Date: 2003/01/16 12:51:34 $
     
     
    % DO NOT MODIFY THIS FILE.  IT IS AN AUTOGENERATED FILE.  
    % EDITING MAY CAUSE THE FILE TO BECOME UNREADABLE TO 
    % THE PATHTOOL AND THE INSTALLER.
     
    p = [...
    %%% BEGIN ENTRIES %%%
    matlabroot,'\toolbox\matlab\general;',...
    matlabroot,'\toolbox\matlab\ops;',...
    matlabroot,'\toolbox\matlab\lang;',...
    matlabroot,'\toolbox\matlab\elmat;',...
    matlabroot,'\toolbox\matlab\elfun;',...
    [...]
    matlabroot,'\toolbox\rtw\targets\xpc\xpc\xpcmngr;',...
    matlabroot,'\toolbox\rtw\targets\xpc\target\kernel\embedded;',...
    matlabroot,'\work;',...
    %%% END ENTRIES %%%
         ...
    ];
     
    p = [userpath,p];
    et je ne vois donc pas comment placer leurs commandes.

    Ma question est donc simple: comment placer tous ces programmes .m de traitement ?

    Merci

  4. #4
    Membre Expert
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Par défaut
    T'as juste à faire un addpath du repertoire SegyMAT suivi d'un savepath
    ou plus simple File->Set path
    ou En mettant dans /usr l'idée est que le repertoire Segymat est connu par tous les utilisateurs sous Linux car la variable PATH contient dans 99.9% des cas le path vers /usr

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Par défaut
    merci,

    donc j'ai essayé de lire le .sgy avec le readsegy de la nouvelle toolbox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Data,SegyTraceHeaders,SegyHeader]=ReadSegy('2009021100064293.sgy','revision',0,'dsf',1)
    il me retourne :

    Data
    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
    Data =
     
      1.0e+075 *
     
       -0.0000         0
       -0.0000         0
       -0.0000         0
       -0.0000         0
       -0.0000         0
       -0.0000         0
       -0.0000         0
       -0.0000         0
       -0.0000         0
       -0.0000         0
       -0.0000         0
    [...]
    SegyTraceHeaders
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    SegyTraceHeaders = 
     
    1x2 struct array with fields:
        SegyMAT_TraceStart
        TraceSequenceLine
        TraceSequenceFile
        FieldRecord
        TraceNumber
        EnergySourcePoint
        cdp
        cdpTrace
        TraceIdenitifactionCode
        NSummedTraces
        NStackedTraces
        DataUse
        offset
        ReceiverGroupElevation
        SourceSurfaceElevation
        SourceDepth
        ReceiverDatumElevation
        SourceDatumElevation
        SourceWaterDepth
        GroupWaterDepth
        ElevationScalar
        SourceGroupScalar
        SourceX
        SourceY
        GroupX
        GroupY
        CoordinateUnits
        WeatheringVelocity
        SubWeatheringVelocity
        SourceUpholeTime
        GroupUpholeTime
        SourceStaticCorrection
        GroupStaticCorrection
        TotalStaticApplied
        LagTimeA
        LagTimeB
        DelayRecordingTime
        MuteTimeStart
        MuteTimeEND
        ns
        dt
        GainType
        InstrumentGainConstant
        InstrumentInitialGain
        Correlated
        SweepFrequenceStart
        SweepFrequenceEnd
        SweepLength
        SweepType
        SweepTraceTaperLengthStart
        SweepTraceTaperLengthEnd
        TaperType
        AliasFilterFrequency
        AliasFilterSlope
        NotchFilterFrequency
        NotchFilterSlope
        LowCutFrequency
        HighCutFrequency
        LowCutSlope
        HighCutSlope
        YearDataRecorded
        DayOfYear
        HourOfDay
        MinuteOfHour
        SecondOfMinute
        TimeBaseCode
        TimeBaseCodeText
        TraceWeightningFactor
        GeophoneGroupNumberRoll1
        GeophoneGroupNumberFirstTraceOrigField
        GeophoneGroupNumberLastTraceOrigField
        GapSize
        OverTravel
        cdpX
        cdpY
        Inline3D
        Crossline3D
        ShotPoint
        ShotPointScalar
        TraceValueMeasurementUnit
        TraceValueMeasurementUnitText
        TransductionConstantMantissa
        TransductionConstantPower
        TransductionUnit
        TraceIdentifier
        ScalarTraceHeader
        SourceType
        SourceEnergyDirectionMantissa
        SourceEnergyDirectionExponent
        SourceMeasurementMantissa
        SourceMeasurementExponent
        SourceMeasurementUnit
        UnassignedInt1
        UnassignedInt2
        SegyMAT_TraceDataStart
    et SegyHeader
    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
    SegyHeader = 
    
                              Rev: [1x2 struct]
                TextualFileHeader: [3200x1 double]
                              Job: 0
                             Line: 1
                             Reel: 1
             DataTracePerEnsemble: 4
        AuxiliaryTracePerEnsemble: 0
                               dt: 1000
                           dtOrig: 1000
                               ns: 4096
                           nsOrig: 4096
                 DataSampleFormat: 1
                     EnsembleFold: 1
                     TraceSorting: 1
                  VerticalSumCode: 1
              SweepFrequencyStart: 0
                SweepFrequencyEnd: 0
                      SweepLength: 0
                        SweepType: 0
                     SweepChannel: 0
            SweepTaperlengthStart: 0
              SweepTaperLengthEnd: 0
                        TaperType: 0
             CorrelatedDataTraces: 0
                       BinaryGain: 0
          AmplitudeRecoveryMethod: 0
                MeasurementSystem: 2
            ImpulseSignalPolarity: 0
            VibratoryPolarityCode: 0
                      Unassigned1: [120x1 double]
         SegyFormatRevisionNumber: 0
             FixedLengthTraceFlag: 1
        NumberOfExtTextualHeaders: 0
                      Unassigned2: [47x1 double]
                             time: [1x4096 double]
    Dans SegyHeader je reconnait le 4096 (en rouge) car c'est le nombre de données par voie mais data est faut (que des 0).
    Il y a en tout 4 voies (ie 4 jeux de données de 4096 éléments chacuns)

    Si quelqu'un arrive à décrypter ce charabia et pouvais m'aider à récupérer mes données, ce serait sympa !

    Merci

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    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 317
    Par défaut
    Les données ne sont pas toutes égales à 0 ... il y a un facteur multiplicateur de 1.0e+075 à l'affichage...

    Utilise la fonction FORMAT pour modifier le format d'affichage

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Par défaut
    Oui merci.

    En faite je l'ai réouvert en enlevant toute les options (allez donc savoir pourquoi j'ai pas commencé par ça..)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Data,SegyTraceHeaders,SegyHeader]=ReadSegy('2009021100064293.sgy')
    il me sort pour Data :

    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
    >> Data
     
    Data =
     
           -3239       -3189       -4159       -4069
           -3249       -3359       -4149       -4059
           -3309       -3439       -4089       -4049
           -3409       -3539       -4079       -4059
           -3519       -3759       -4129       -4079
           -3609       -3999       -4149       -4069
           -3669       -4179       -4129       -4069
           -3669       -4289       -4119       -4079
           -3629       -4289       -4189       -4079
           -3559       -4149       -4259       -4069
           -3499       -3939       -4219       -4059
           -3449       -3829       -4199       -4069
           -3409       -3859       -4249       -4069
           -3399       -3979       -4309       -4059
           -3419       -4049       -4349       -4049
           -3459       -4019       -4319       -4049
           -3479       -3959       -4339       -4059
    [...]
    Mais ce ne sont pas les valeurs voulues, mais data est de bonne taille :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >> size(Data)
     
    ans =
     
            4096           4
    Je dois mal lire mon binaire, le format SEG-Y doit posseder une structure que j'aimerais déchiffrer mais je ne sais pas comment.. ou alors essayé plein de commande d'ouverture seg y et voir laquelle marche...

    Pas une idée par le plus grand des hasards?

    Merci !

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Par défaut
    Il est peut etre possible que ce soit en réalité les bonnes valeurs mais que la fonction ReadSegy de matlab me transforme les Volts en digits
    ou bien il ne lit pas certains gains dans le header..mais il n'y a pas l'air d'avoir d'options..pour relier les valeurs du header et les datas

    ...si quelqu'un pouvait me confirmer


    Merci

    EDIT : C'est sûr que ce sont les bonne données, mais pas au bon format, idée?

Discussions similaires

  1. [À lire] Les règles de ce forum
    Par hiko-seijuro dans le forum C++Builder
    Réponses: 4
    Dernier message: 07/09/2009, 16h55
  2. XSL ne parvient pas à lire les noeuds XML ??
    Par yahn dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 27/06/2004, 19h29
  3. Comment lire les résumés/métadonnées Windows ?
    Par cedricgirard dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 18/06/2004, 18h12
  4. Lire les pistes d'un cd audio qd il y a plusieur lecteurs cd
    Par busy999 dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/10/2003, 09h26
  5. Réponses: 5
    Dernier message: 20/08/2002, 18h01

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