我在堆叠两个矩阵的过程中有点挣扎。我正在使用pyKalman软件包,该软件包在更新后会返回一个矩阵元组。具有更新的估计值(new_pred 1 x 2矢量)和相应的协方差矩阵(new_cov 2 x 2矩阵)的矩阵。

更新之后,我想通过这些估计将返回值堆叠到其相应的输出中,以对数据进行递归平滑。

以下是当前的实现方式。

for meas in onlineObservations:
    (new_pred, new_cov) = kf.filter_update(states_pred[-1], cov_pred[-1], meas)
    states_pred = np.vstack((states_pred, new_pred))
    cov_pred = np.stack((cov_pred, new_cov), axis=0)


这对于更新的估算值(1x2向量)确实非常有效,但是当我尝试将new_cov添加到名为cov_pred的数组时失败了。好措施:

states_pred.shape = (900,2)
cov_pred.shape = (900, 2, 2)


我尝试将“堆栈”的轴更改为无济于事。它可能是基本的东西,但是过去一个小时我一直在努力解决它,似乎找不到一个“简单”的解决方案。

提前致谢。

最佳答案

这应该工作-

cov_pred = []
for meas in onlineObservations:
    (new_pred, new_cov) = kf.filter_update(states_pred[-1], cov_pred[-1], meas)
    states_pred = np.vstack((states_pred, new_pred))
    cov_pred.append[new_cov]
cov_pred = np.stack(cov_pred, axis=0)


但是,由于您要更新代码中已在使用的数组,因此应使用np.concatenate

for meas in onlineObservations:
    (new_pred, new_cov) = kf.filter_update(states_pred[-1], cov_pred[-1], meas)
    states_pred = np.vstack((states_pred, new_pred))
    cov_pred = np.concatenate((cov_pred, np.reshape(new_cov, (1,2,2))), axis=0)

关于python - 将2D阵列添加到3D阵列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49532933/

10-11 19:53