我在堆叠两个矩阵的过程中有点挣扎。我正在使用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/