У меня есть (возможно, глупый) вопрос:
Как я могу построить данные D-решетки, сгенерированные программой на c ++ в mathematica (9)?
(Интуитивно я думаю, что это не может быть слишком сложно, но с Google, StackOverflow и т. Д. Я не мог найти никакого решения)
В данный момент я пытаюсь выдать данные в столбцах, где каждая строка имеет вид:
xcoordinate ycoordinate value
Я обнаружил, что в принципе можно решить эту проблему с помощью MatrixPlot [], но для этого нужно будет предоставить данные в виде матрицы, которая несовместима с большинством других программ построения графиков, поэтому я хочу избежать этого, если это возможно.
Я новичок в 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.
Других решений пока нет …