<p>经过进一步的研究和测试,我找到了一个解决方案。使用<code>numba</code>包,以下代码对我有效:</p>
<pre><code>from numba import jit
@jit
def calc_MCQ_numba(SC_param, SC_param_est, q, s_dot_v):
t1 = SC_param[3] + SC_param_est[0] + SC_param[10] + SC_param[9] +
SC_param[8]
t2 = np.cos(q[9])
t3 = np.sin(q[9])
t4 = SC_param[38] - SC_param[41]
t5 = SC_param[35] - SC_param[38] + SC_param[40]
t6 = t2 * SC_param_est[7]
t7 = t3 * SC_param_est[9]
...
return np.array([[t1, 0, 0, 0, t37, t54, t54, -t127, t61, -t128, 0, -t126, t125, 0, -t91, -t106, -t106,
-t45 * t108 * s_dot_v[6] - t46 * t91, -t114 * t45 - t16 * t46,
-(t123 * t45 + t46 * t78) * SC_param_est[0], SC_param[7] * t124 * t1],
[0, t1, 0, -t31, 0, -t51, -t51, -t56, -t38, -t68, t126, 0, -t134, t129, 0, t131, t131,
t46 * t108 * s_dot_v[6] - t45 * t91, t114 * t46 - t16 * t45,
-SC_param_est[0] * (-t123 * t46 + t45 * t78), -t135 * t133 * t1], t86, t34, t36, t35,
[t54, -t51, 0, -t300, -t58, t89, t89, t115, t121, -t69, -t106, t131, 0, t450, t43, t55,
t55, t170, t76, t239, -t47], t10, t5, t2], dtype='float64')
</code></pre>
<p>使用此函数,第一次执行代码需要很长时间(在我的机器上大约需要25秒),但每次再次调用该函数都非常快。我成功地获得了10µs的执行时间-这与我的第一个结果相比是惊人的</p>