[Users-fr] Lecture de fichier

classic Classic list List threaded Threaded
8 messages Options
Lesept Lesept
Reply | Threaded
Open this post in threaded view
|

[Users-fr] Lecture de fichier

Bonjour

Je cherche à lire un fichier ASCII issu de CST Microwave Studio qui n’est pas au format CSV.

Les deux premières lignes sont de texte, puis viennent les données comme suit :

 

        Frequency / GHz                S2,1/abs,dB

----------------------------------------------------------------------

                       0                    -0.025475983

            0.0079999994                     -0.02356626

             0.015999999                      -0.0181144

                   0.024                   -0.0099123849

             0.031999998                  -0.00015966068

             0.039999999                    0.0097096473

                   0.048                      0.01821516

             0.055999998                        0.024048

 

Le fonctions fscanfMat et csvRead ne donnent pas de bons résultats. Comment puis-je faire ?

Merci

 

Fabrice AUZANNEAU

 


_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr
paul paul
Reply | Threaded
Open this post in threaded view
|

Re: Lecture de fichier


Bonjour,

Avez-vous essayé mget ou mgetl (à utiliser avec eval) ?

Ou peut-être en convertissant votre fichier au préalable ?

Notez que pour afficher précisément les résultats contenant de nombreuses décimales,
la fonction format doit être utilisée.

Cordialement,
Paul Bignier


On 04/03/2014 02:21 PM, AUZANNEAU Fabrice 125436 wrote:

Bonjour

Je cherche à lire un fichier ASCII issu de CST Microwave Studio qui n’est pas au format CSV.

Les deux premières lignes sont de texte, puis viennent les données comme suit :

 

        Frequency / GHz                S2,1/abs,dB

----------------------------------------------------------------------

                       0                    -0.025475983

            0.0079999994                     -0.02356626

             0.015999999                      -0.0181144

                   0.024                   -0.0099123849

             0.031999998                  -0.00015966068

             0.039999999                    0.0097096473

                   0.048                      0.01821516

             0.055999998                        0.024048

 

Le fonctions fscanfMat et csvRead ne donnent pas de bons résultats. Comment puis-je faire ?

Merci

 

Fabrice AUZANNEAU

 



_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr

-- 
Paul BIGNIER
Development engineer
-----------------------------------------------------------
Scilab Enterprises
143bis rue Yves Le Coz - 78000 Versailles, France
Phone: +33.1.80.77.04.69
http://www.scilab-enterprises.com 

_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr
patrice metaireau patrice metaireau
Reply | Threaded
Open this post in threaded view
|

Re: Lecture de fichier

bonjour,

essayez de supprimer les 2 1ères lignes qui ne sont pas des nombres.

fic=mopen('C:/Documents and Settings/utilisateur/Mes documents/scilab/fichier_brut.txt','rt')

//supprime les 2 1ères lignes
m=mgetl(fic,2)
n=mgetl(fic)

a+


Le 3 avril 2014 14:35, Paul Bignier <[hidden email]> a écrit :

Bonjour,

Avez-vous essayé mget ou mgetl (à utiliser avec eval) ?

Ou peut-être en convertissant votre fichier au préalable ?

Notez que pour afficher précisément les résultats contenant de nombreuses décimales,
la fonction format doit être utilisée.

Cordialement,
Paul Bignier



On 04/03/2014 02:21 PM, AUZANNEAU Fabrice 125436 wrote:

Bonjour

Je cherche à lire un fichier ASCII issu de CST Microwave Studio qui n’est pas au format CSV.

Les deux premières lignes sont de texte, puis viennent les données comme suit :

 

        Frequency / GHz                S2,1/abs,dB

----------------------------------------------------------------------

                       0                    -0.025475983

            0.0079999994                     -0.02356626

             0.015999999                      -0.0181144

                   0.024                   -0.0099123849

             0.031999998                  -0.00015966068

             0.039999999                    0.0097096473

                   0.048                      0.01821516

             0.055999998                        0.024048

 

Le fonctions fscanfMat et csvRead ne donnent pas de bons résultats. Comment puis-je faire ?

Merci

 

Fabrice AUZANNEAU

 



_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr

-- 
Paul BIGNIER
Development engineer
-----------------------------------------------------------
Scilab Enterprises
143bis rue Yves Le Coz - 78000 Versailles, France
Phone: <a href="tel:%2B33.1.80.77.04.69" value="+33180770469" target="_blank">+33.1.80.77.04.69
http://www.scilab-enterprises.com 

_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr



_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr
Sébastien GUILLOT Sébastien GUILLOT
Reply | Threaded
Open this post in threaded view
|

Re: Lecture de fichier

In reply to this post by Lesept

Utilise la fonction fscanfMat(‘nom du fichier.txt’) qui lira que les valeurs numériques. Ca te donnera un matrice de 2x8.

Cordialement

 

Sébastien GUILLOT,

Ingénieur en Structures Béton Armé

Projet Scilab aux Eurocodes

 

De : users-fr [mailto:[hidden email]] De la part de AUZANNEAU Fabrice 125436
Envoyé : jeudi 3 avril 2014 14:21
À : [hidden email]
Objet : [Users-fr] Lecture de fichier

 

Bonjour

Je cherche à lire un fichier ASCII issu de CST Microwave Studio qui n’est pas au format CSV.

Les deux premières lignes sont de texte, puis viennent les données comme suit :

 

        Frequency / GHz                S2,1/abs,dB

----------------------------------------------------------------------

                       0                    -0.025475983

            0.0079999994                     -0.02356626

             0.015999999                      -0.0181144

                   0.024                   -0.0099123849

             0.031999998                  -0.00015966068

             0.039999999                    0.0097096473

                   0.048                      0.01821516

             0.055999998                        0.024048

 

Le fonctions fscanfMat et csvRead ne donnent pas de bons résultats. Comment puis-je faire ?

Merci

 

Fabrice AUZANNEAU

 




Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection Antivirus avast! est active.



_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr
David Chèze David Chèze
Reply | Threaded
Open this post in threaded view
|

Re: [Users-fr] Lecture de fichier

In reply to this post by Lesept
Bonjour,

fscanfMat fait bien le travail a priori avec un fichier ascii test.txt re-généré à partir du message, sur WIN7-64bits, cf ci-dessous.
Avec les imports de fichier texte, il faut parfois se méfier des formats d'encodage utilisé, je crois que fscanfMat lit les UTF-8 par défaut, peut-être configurable à vérifier...


-->[M,text]=fscanfMat("test.txt")
 text  =
 
!        Frequency / GHz                S2,1/abs,dB                   !
!                                                                     !
!---------------------------------------------------------------------!
!     -                                                               !
 M  =
 
    0.         - 0.0254760  
    0.0080000  - 0.0235663  
    0.0160000  - 0.0181144  
    0.024      - 0.0099124  
    0.0320000  - 0.0001597  
    0.0400000    0.0097096  
    0.048        0.0182152  
    0.0560000    0.024048  
Lesept Lesept
Reply | Threaded
Open this post in threaded view
|

Re: Lecture de fichier

In reply to this post by Lesept
Ça se complique :
Mon fichier maintenant alterne des descripteurs en texte (N lignes, nombre connu) et des valeurs numériques sur 3 colonnes (en nombre que je peux lire dans les textes précédents).

Exemple :

CST XY Data Exchange Format V2

Title    = S1,1
Xlabel   = Frequency / GHz
Ylabel   =

Curvelabel = L=1e-006
Filename   = ^curve1.sig
Npoints    = 1001
Type       = 8
Subtype    = 16
Impedance  = -99
Type flags = 00000
Data type  = Re/Im
Yscale     = 1
Logfactor  = 20
Plot type  = Real
View type  = Cartesian

0 0,0053385100327432 -0
0,007999999448657 0,00235395738855 -0,0049901204183698
0,015999998897314 -0,0032660630531609 -0,0046237856149673
0,024000000208616 -0,0052412417717278 0,00047338005970232
0,031999997794628 -0,0013577026547864 0,0043861991725862
0,03999999910593 0,0040506441146135 0,0025112153962255
0,048000000417233 0,0049311546608806 -0,0032934974879026
0,055999998003244 0,00027633408899419 -0,006765772588551
0,063999995589256 -0,0047289114445448 -0,0042283767834306

...
1001 lignes de données numériques
...

Curvelabel = L=1,4444444444444e-006
Filename   = ^curve1.sig
Npoints    = 1001
Type       = 8
Subtype    = 16
Impedance  = -99
Type flags = 00000
Data type  = Re/Im
Yscale     = 1
Logfactor  = 20
Plot type  = Real
View type  = Cartesian

0 -0,0058849854394794 5,144817905034e-010
0,007999999448657 -0,0025571149308234 0,0051365699619055
0,015999998897314 0,0037152583245188 0,0042978539131582
0,024000000208616 0,0059239231050014 -0,0018381457775831
0,031999997794628 0,0015625511296093 -0,0066777071915567
0,03999999910593 -0,0045619248412549 -0,0050339885056019
0,048000000417233 -0,0056465244852006 0,0010867628734559

...
Etc.

Quelle est la meilleure façon de lire les données numériques dans un tableau ?
Merci


Fabrice AUZANNEAU

-----Message d'origine-----
De : users-fr [mailto:[hidden email]] De la part de CHEZE David 227480
Envoyé : vendredi 4 avril 2014 08:48
À : [hidden email]
Objet : [PROVENANCE INTERNET] Re: [Users-fr] Lecture de fichier

Bonjour,

fscanfMat fait bien le travail a priori avec un fichier ascii test.txt re-généré à partir du message, sur WIN7-64bits, cf ci-dessous.
Avec les imports de fichier texte, il faut parfois se méfier des formats d'encodage utilisé, je crois que fscanfMat lit les UTF-8 par défaut, peut-être configurable à vérifier...


-->[M,text]=fscanfMat("test.txt")
 text  =
 
!        Frequency / GHz                S2,1/abs,dB                   !
!                                                                     !
!---------------------------------------------------------------------!
!     -                                                               !
 M  =
 
    0.         - 0.0254760  
    0.0080000  - 0.0235663  
    0.0160000  - 0.0181144  
    0.024      - 0.0099124  
    0.0320000  - 0.0001597  
    0.0400000    0.0097096  
    0.048        0.0182152  
    0.0560000    0.024048  




--
View this message in context: http://mailinglists.scilab.org/Users-fr-Lecture-de-fichier-tp4030231p4030242.html
Sent from the Liste utilisateur (en français) mailing list archive at Nabble.com.
_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr
_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr
serge911 serge911
Reply | Threaded
Open this post in threaded view
|

Re: Lecture de fichier

Bonjour,
avez vous trouvé une solution aux problème de lecture de ficher?
je suis confronté aux memes difficultés;
Lesept Lesept
Reply | Threaded
Open this post in threaded view
|

Re: Lecture de fichier

Oui, j'utilise mgetl et ça marche bien. Voici la fonction lecture que j'ai écrite, adaptée bien sûr à mon besoin :

function [fr,s,titre,N]=lecture(nomfich,N)
// lecture du fichier
    [fd,err]=mopen(nomfich)
// lire 5 lignes
    text=mgetl(fd,5)
    disp(text)
    N=0
    while ~meof(fd) do
        N=N+1
// lire 14 lignes
        text=mgetl(fd,14)
        if meof(fd) then resume, end // fin de lecture si fin de fichier atteinte
        titre=part(text(2),14:21)
// ligne 9 : nb de fréquences
        nf=evstr(part(text(4),14:17))
// lire nf fréquences
        for i=1:nf
            t=mgetl(fd,1)
            tt=strsubst(t,',','.')
            uu=strsubst(tt,ascii(9),',')
            a=evstr(uu)
            fr(i)=a(1)
            s(N,i)=a(2)+%i*a(3)
        end
    end
    mclose('all')
endfunction

Elle lit les lignes de commentaires, puis recherche le nombre de lignes de données à lire, extrait les valeurs des textes lus, convertit les chiffres à virgule en chiffres à points (3,2 --> 3.2), et crée les nombres complexes dont j'ai besoin.

Cordialement,

Fabrice AUZANNEAU

-----Message d'origine-----
De : users-fr [mailto:[hidden email]] De la part de serge911
Envoyé : mercredi 4 juin 2014 10:44
À : [hidden email]
Objet : Re: [Users-fr] Lecture de fichier

Bonjour,
avez vous trouvé une solution aux problème de lecture de ficher?
je suis confronté aux memes difficultés;



--
View this message in context: http://mailinglists.scilab.org/Users-fr-Lecture-de-fichier-tp4030231p4030673.html
Sent from the Liste utilisateur (en français) mailing list archive at Nabble.com.
_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr
_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr