我希望使用ListPointPlot3D
在同一轴上绘制多组数据。
我的一个数据集由单个变量参数化:
firstDataSet = Table[ {x_func[t], y_func[t], z_func[t]}, {t, 0, 1, 0.01} ]
另一个是需要两个的表面:
secondDataSet = Table[ {x, y, z_func_2[x, y]}, {x, -1, 1, 0.01}, {y, -1, 1, 0.01} ]
然而,第一个给我一个有序三元组的列表,第二个给我一个 有序三元组列表的列表。
获取第二个数据集的有序三元组列表最常用的方法是什么?我对Mathematica不是很熟悉,但是生成一个列表列表然后压扁它感觉有点笨拙。
答案 0 :(得分:0)
好吧,我觉得使用Flatten
没问题,但这是另一种方法。
{First@#, Last@#, z_func_2@@#} & /@ Tuples[Range[-1, 1, 0.01], 2];
当然,这个要求您对Mathematica的pure functions和function mapping感到满意。如果你担心性能,你可以用一堆不同的方法实现它,并用Timing
函数点击它们以查看哪个最快(因为我认为如果它运行得很快,那么它就是至少 hacky )。
r = Range[-1, 1, 0.01];
f[pair_] := {First@pair, Last@pair, z_func_2@@pair};
Flatten@Table[{x, y, z_func_2[x, y]}, {x, -1, 1, 0.01}, {y, -1, 1, 0.01}] // Timing
f /@ Tuples[r, 2] // Timing
Flatten@Outer[f, r, r] // Timing
(请注意,我没有检查此代码是否运行正常;我没有在我当前的计算机上安装Mathematica)