在 matlab 中从符号到数字

From symbolic to numeric in matlab

在我的问题中,有一些矩阵像

T_x=[ cos(q1) sin(q1+q2) cos(q1) -sin(q2);
      0       0           1      -1;
      sin(q4) 0           1      q1;
      0       0           0      1]

此外,我有 q 值,例如:q=[0.2 0.05 -2 -3.5]

如何将 q 值插入 T_x 矩阵?

谢谢

一种方法是使用一个将值作为参数的矩阵返回函数:

>> T_x = @(q) [ cos(q(1)) sin(q(1)+q(2)) cos(q(1)) -sin(q(2));
                0          0             1         -1;
                sin(q(4))  0             1         q(1);
                0          0             0         1];

>> T_x([.2 .05 -2 -3.5])

ans =

    0.9801    0.2474    0.9801   -0.0500
         0         0    1.0000   -1.0000
    0.3508         0    1.0000    0.2000
         0         0         0    1.0000

这样做的好处是不需要符号包 - 它可以移植到 Octave。

您可以使用 subs.

syms q1 q2 q3 q4

T_x = [ cos(q1) sin(q1+q2) cos(q1) -sin(q2);
        0       0          1       -1;
        sin(q4) 0          1       q1;
        0       0          0       1];

q = [.2 .05 -2 -3.5];

subs(T_x, [q1 q2 q3 q4], q)

ans =

[  cos(1/5), sin(1/4), cos(1/5), -sin(1/20)]
[         0,        0,        1,         -1]
[ -sin(7/2),        0,        1,        1/5]
[         0,        0,        0,          1]

double(ans)

ans =

    0.9801    0.2474    0.9801   -0.0500
         0         0    1.0000   -1.0000
    0.3508         0    1.0000    0.2000
         0         0         0    1.0000

只需为您想要的所有符号变量执行即可!