将 cmath 函数与 get_continuous_state_vector() 的元素一起使用时没有匹配函数
No matching function when using cmath functions with elements of get_continuous_state_vector()
在我的 DoCalcTimeDerivative
中,我需要将 cos 作为状态向量元素之一。
我用下面的代码来做这个
Vector4<T> x = context.get_continuous_state_vector().CopyToVector();
T c0 = std::cos(x[0]);
但是,我收到以下错误
error: no matching function for call to ‘cos(Eigen::DenseCoeffsBase<Eigen::Matrix<Eigen::AutoDiffScalar<Eigen::Matrix<double, -1, 1> >, 4, 1, 0, 4, 1>, 1>::Scalar&)’
我也试过使用
const systems::VectorBase<T>& x = context.get_continuous_state_vector();
T c0 = std::cos(x[0]);
这同样给出了以下错误
error: no matching function for call to ‘cos(const Eigen::AutoDiffScalar<Eigen::Matrix<double, -1, 1> >&)’
这很奇怪,因为我在示例中看到 std::cos
和 std::sin
,但我似乎无法弄清楚为什么它在示例中有效,但在我的示例中却无效。
试试这个:
using std::cos;
Vector4<T> x = context.get_continuous_state_vector().CopyToVector();
T c0 = cos(x[0]);
在我的 DoCalcTimeDerivative
中,我需要将 cos 作为状态向量元素之一。
我用下面的代码来做这个
Vector4<T> x = context.get_continuous_state_vector().CopyToVector();
T c0 = std::cos(x[0]);
但是,我收到以下错误
error: no matching function for call to ‘cos(Eigen::DenseCoeffsBase<Eigen::Matrix<Eigen::AutoDiffScalar<Eigen::Matrix<double, -1, 1> >, 4, 1, 0, 4, 1>, 1>::Scalar&)’
我也试过使用
const systems::VectorBase<T>& x = context.get_continuous_state_vector();
T c0 = std::cos(x[0]);
这同样给出了以下错误
error: no matching function for call to ‘cos(const Eigen::AutoDiffScalar<Eigen::Matrix<double, -1, 1> >&)’
这很奇怪,因为我在示例中看到 std::cos
和 std::sin
,但我似乎无法弄清楚为什么它在示例中有效,但在我的示例中却无效。
试试这个:
using std::cos;
Vector4<T> x = context.get_continuous_state_vector().CopyToVector();
T c0 = cos(x[0]);