将函数z(x,y)转换为有序三元组列表

时间:2017-04-23 20:29:29

标签: wolfram-mathematica

我希望使用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不是很熟悉,但是生成一个列表列表然后压扁它感觉有点笨拙。

1 个答案:

答案 0 :(得分:0)

好吧,我觉得使用Flatten没问题,但这是另一种方法。

{First@#, Last@#, z_func_2@@#} & /@ Tuples[Range[-1, 1, 0.01], 2];

当然,这个要求您对Mathematica的pure functionsfunction 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)