2009-12-22 40 views
6

Tôi có dữ liệu (điểm) mà tôi phải nhập từ một chương trình khác vào Mathematica, vì vậy tôi có thể vẽ nó. Tôi có quyền kiểm soát cách các điểm sẽ được ghi vào tệp, vì vậy tôi có thể đặt chúng theo bất kỳ cách nào tôi muốn. Cách tốt nhất để nhập chúng vào Mathematica là gì? Như tôi sẽ sử dụng StreamDensityPlot, biến tôi sẽ phải vượt qua để StreamDensityPlot sẽ phải theo cách sau:Cách nhập dữ liệu từ một tệp dưới dạng danh sách/mảng trong 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}, 
     } 
    } 

Làm thế nào bạn sẽ tư vấn cho tôi để đưa dữ liệu trong file văn bản trung gian? Và tôi nên sử dụng cái gì để nhập nó? Tôi đã thử nhập ["mytext.txt", "List"], có tập tin văn bản của tôi với một cái gì đó trong mẫu được hiển thị ở trên nhưng có vẻ như Mathematica xem xét các điểm như chuỗi, và tôi không thể làm bất cứ điều gì với họ. Có cách nào để chuyển đổi chuỗi thành dữ liệu tùy ý nhất có thể bằng các ngôn ngữ khác (miễn là chúng hợp lệ trong loại dữ liệu mới) không?

Tóm tắt:

  1. Có thể chuyển đổi một chuỗi, ví dụ, "5" tới số, trong Mathematica? Nếu có, làm thế nào?
  2. Có thể chuyển đổi chuỗi như "{1, 2, 3}" sang danh sách trong Mathematica không? Nếu có, làm thế nào?
  3. Có thể tải tệp CSV dưới dạng danh sách các danh sách như được hiển thị ở trên trong Mathematica không?

Cảm ơn

Trả lời

9

Chuyển đổi Strings để Expressions được thực hiện với ToExpression. Nếu bạn có tệp văn bản thuần túy foo.txt, với định dạng như trong ví dụ của bạn, thì chỉ cần nhập nó vào Mathematica với Get, tức là, << /path/to/foo.txt; sẽ nhập và đánh giá data theo cách bạn muốn, không cần dịch văn bản sang biểu thức.

+2

data = ToExpression [Import [ "/ thư mục/yourimportfile.txt "]]; – Christoph

5

Hãy thử định dạng tập tin dữ liệu của bạn như thế này:

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 
... 

Vì vậy, bạn có thể sử dụng nhập CSV Mathematica. Sau đó phân vùng mỗi hàng thành một danh sách các điểm sau khi nhập.

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

Ngoài ra, hãy nhớ rằng Mathematica làm ký hiệu khoa học khác nhau hơn so với C (hoặc bất kỳ ngôn ngữ mà bạn đang sử dụng để ghi các file dữ liệu.

Các vấn đề liên quan