首先,background.This是我们在制作新发射的航天器的软件流水线时面临的一个问题。船上的望远镜正在观察一个特定的目标。然而,正如你可能预期的那样,望远镜并不是完全稳定的,还会有轻微的摆动。因此,在不同的时刻,它看到的天空部分略有不同。
为了解决这个问题,我们有一个实验室制作的模板(基本上是一个由0和1组成的2-d数组),它告诉我们在特定的时刻(假设t),天空的哪一部分正在被观察。它看起来像这样。

这里的白色部分表示望远镜实际正在观测的部分。这个数组实际上是2400x2400(为了精确起见。不能减少,因为它会造成信息的丢失。它也不是0和1的数组,而是实数,因为有其他的影响)。现在知道了望远镜的摆动,我们也知道这个模板将摆动相同的量。因此,我们需要(使用np.roll)将阵列沿x或y方向移动(如果航天器正在旋转,有时甚至会旋转),并进行累积(以便我们知道已经观察了天空的哪一部分多长时间)。然而,这个过程非常耗时和冗长(即使使用add和roll的numpy实现也是如此)。此外,我们需要在管道中每秒至少执行500次。有没有办法避免它呢?我们正在寻找一种算法解决方案,也许是一种从根本上解决整个问题的新方法。欢迎任何帮助。另外,如果有任何不清楚的部分,请让我知道。我将很乐意进一步解释它。上一个问题与同一主题相关:Click Here
我们正在用python实现管道(我知道这可能是一个糟糕的选择)
发布于 2016-12-19 15:15:40
如果你想使用移位的数组内容进行一些计算(应用掩码等),你不需要物理地移动它-只需使用修改的索引方案来寻址相同的元素。
例如,要将数组向右虚拟移位dx,请使用in calculations A[y][x-dx]而不是A[y][x]
当旋转发生时,这种方法会变得更加复杂,但仍然可以解决(应该比较实数组旋转和坐标重新计算的时间)
https://stackoverflow.com/questions/41216519
复制相似问题