# Matlab 求雅可比导数报 convertChar 错误

> 原文链接：https://robotics.hellobike.com/pitfalls/2020-12-09-robotics-se-20672
> 频道：pitfalls | 更新日期：2020-12-09 | 标签：auto, stackexchange, robotic-arm, kinematics, jacobian
> 核心摘要：在 Matlab 符号计算雅可比导数时报 convertChar，将 sym 改为 str2sym 并声明参数即可。

# Matlab 求雅可比导数报 convertChar 错误

::: v-pre
> 本文由 AI 根据公开内容整理，可能有误，请以原文为准：[How do I compute the derivative of the Jacobian with Matlab?](https://robotics.stackexchange.com/questions/20672/how-do-i-compute-the-derivative-of-the-jacobian-with-matlab)（Robotics Stack Exchange #20672）

**状态**：已解决

## 问题

提问者用 Matlab 对含 `q1(t)`、`q2(t)`、`q3(t)` 的雅可比元素求时间导数，执行时出现 `Error using sym>convertChar`，提示字符串表达式应使用 `str2sym`。

## 环境

Linux / ROS 机器人软件与控制通用开发环境

## 解决办法

1. 在符号声明中加入参数：`syms q1 q2 q3 t a3 a2`。
2. 将 `sym('q1(t)')`、`sym('q2(t)')`、`sym('q3(t)')` 改为 `str2sym('q1(t)')`、`str2sym('q2(t)')`、`str2sym('q3(t)')`。
3. 继续用 `J11 = -sin(q1(t))*(a3*cos(q2(t) + q3(t)) + a2*cos(q2(t)))` 定义元素，并用 `dJ11dt = diff(J11,t)` 求导。

原问题作者：J.D.；采纳答案作者：Spaceman。原内容依 CC BY-SA 4.0 授权，本页摘要同样依 CC BY-SA 4.0 授权。
:::

## 原始参考来源 (Sources)

- [Robotics Stack Exchange #20672：How do I compute the derivative of the Jacobian with Matlab?](https://robotics.stackexchange.com/questions/20672/how-do-i-compute-the-derivative-of-the-jacobian-with-matlab)