我有一个点列表,其中每个点是其3个坐标的列表:x,y和z。 但是坐标x和y中的一些点是“坏的”,我想清理它们。是否可以编写一条规则来做到这一点?我试过了:
cleanAdjustedPoints[adjustedPoints_List] := adjustedPoints /. {x_, y_, z_} /; x < 0 -> {0, y, z}; /; y > constB -> {x, constB, z};
我已经看到只有第一条规则应用于带有坏x的点,而带有坏y的点则不会改变。 Mathematica没有给出sintax错误,所以我认为它是正确的。 有什么建议?感谢。
答案 0 :(得分:1)
您只需将规则放在列表中即可。另外,请注意RuleDelayed(:>
)使用本地化变量x,y和amp;确保他们不会从您计划中的其他地方获取价值。
cleanAdjustedPoints[adjustedPoints_List] :=
adjustedPoints /. {{x_, y_, z_} /; x < 0 :> {0, y, z},
{x_, y_, z_} /; y > constB :> {x, constB, z}};
constB = 5;
cleanAdjustedPoints[{{-1, 2, 3}, {4, 5, 6}, {7, 8, 9}}]
{{0,2,3},{4,5,6},{7,5,9}}