plot — Построение двумерных данных решетки из c ++ в Mathematica

У меня есть (возможно, глупый) вопрос:

Как я могу построить данные D-решетки, сгенерированные программой на c ++ в mathematica (9)?
(Интуитивно я думаю, что это не может быть слишком сложно, но с Google, StackOverflow и т. Д. Я не мог найти никакого решения)

  • Какой выходной формат лучше для этого?
  • Какая команда Mathematica лучше?

В данный момент я пытаюсь выдать данные в столбцах, где каждая строка имеет вид:

xcoordinate ycoordinate value

Я обнаружил, что в принципе можно решить эту проблему с помощью MatrixPlot [], но для этого нужно будет предоставить данные в виде матрицы, которая несовместима с большинством других программ построения графиков, поэтому я хочу избежать этого, если это возможно.

0

Решение

Я новичок в StackOverflow и немного беспокоюсь о требованиях к ответам. Я сделал все возможное:

Из фактов, приведенных в вопросе, я не понимаю, почему не просто использовать ListPlot3D? Вам не нужен какой-либо конкретный порядок в наборе данных, Mathematica попытается отсортировать ваши данные.

Во-первых, вы можете экспортировать данные C ++ в файл вида

x1 y1 value1
x2 y2 value2
x3 y3 value3
...

Файл этого формата можно импортировать с помощью

Import["path/to/file.txt", "Table"]

Затем у вас будет матрица, как в следующем примере:

d1 = Flatten[Table[{x, y, Cos[Sqrt[x^2 + y^2]]}, {x, 0, 6, 0.2}, {y, 0, 6, 0.2}], 1];
d2 = RandomSample[d1]
ListPlot3D[d1]
ListPlot3D[d2]

d1 будет плоский список {x,y,z}
d2 будет такой же список в перемешанном виде

Оба приведут к одному и тому же красивому сюжету волны, возникающей в {0,0,1}

Насколько я могу сказать, ListPlot3D доступен с Mathematica 8.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]