2009-12-22 8 views
6

J'ai des données (points) que je dois importer d'un autre programme vers Mathematica, donc je peux les tracer. J'ai un contrôle sur la façon dont les points vont être écrits dans le fichier, donc je peux les mettre comme je veux. Quel est le meilleur moyen de les importer dans Mathematica? Comme je vais utiliser StreamDensityPlot, la variable je vais devoir passer à StreamDensityPlot devra être de la manière suivante:Comment importer des données d'un fichier sous forme de liste/tableau dans Mathematica

data = { 
     { 
      { a, b, c }, {a, b, c}, {a, b, c}, 
      { a, b, c }, {a, b, c}, {a, b, c}, 
      { a, b, c }, {a, b, c}, {a, b, c}, 
     } 
    ... 
     { 
      { a, b, c }, {a, b, c}, {a, b, c}, 
      { a, b, c }, {a, b, c}, {a, b, c}, 
      { a, b, c }, {a, b, c}, {a, b, c}, 
     } 
    } 

Comment me serait vous conseiller de mettre les données dans le fichier texte intermédiaire? Et que dois-je utiliser pour l'importer? J'ai essayé Import ["mytext.txt", "List"], ayant mon fichier texte avec quelque chose dans la forme montrée ci-dessus mais il semble que Mathematica considère les points comme des chaînes, et je ne peux rien faire avec eux. Existe-t-il un moyen de convertir des chaînes en données arbitraires comme cela est possible dans d'autres langues (à condition qu'elles soient valides dans ce nouveau type de données)?

Recap:

  1. Est-il possible de convertir une chaîne, par exemple, "5" à un certain nombre, en Mathematica? Si oui, comment?
  2. Est-il possible de convertir une chaîne comme "{1, 2, 3}" en une liste dans Mathematica? Si oui, comment?
  3. Est-il possible de charger un fichier CSV sous la forme d'une liste de listes comme indiqué ci-dessus dans Mathematica?

Merci

Répondre

9

aux expressions conversion de chaînes se fait avec ToExpression. Si vous avez un fichier texte en clair foo.txt, avec la mise en forme comme dans votre exemple, il suffit d'importer dans Mathematica avec Get, c'est-à-dire, << /path/to/foo.txt;, d'importer et d'évaluer data comme vous le souhaitez, sans avoir besoin de traduire du texte en expressions.

+2

data = ToExpression [Importer [ "/ dossier/yourimportfile.txt "]]; – Christoph

5

Essayez le formatage de votre fichier de données comme ceci:

A, B, C, A, B, C, A, B, C 
A, B, C, A, B, C, A, B, C 
A, B, C, A, B, C, A, B, C 
... 

Vous pouvez donc utiliser l'importation CSV de Mathematica. Ensuite, partitionnez chaque ligne dans une liste de points après l'importation.

Partition[#, 3]& /@ Import["file.csv", "CSV"] 

Aussi, gardez à l'esprit que Mathematica notation scientifique différemment que C (ou quelle que soit la langue que vous utilisez pour écrire le fichier de données.

Questions connexes