matlab中从符号到数字的转换

matlab中从符号到数字的转换,matlab,numeric,symbolic-math,Matlab,Numeric,Symbolic Math,在我的问题中,有一些矩阵 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.20.05-2-3.5] 如何将q值插入T\u x矩阵 感谢一种方法是使用矩阵返回函数,将值作为参数: >> T_x =

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

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.20.05-2-3.5]

如何将
q
值插入
T\u 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
这样做的好处是不需要符号包——它可以移植到倍频程。

您可以使用


只需对所有您想要的符号变量执行此操作

虽然这是一个很好的解决方案,但它并不是我问题中“从符号到数字”的答案,在每一步中都有不同的T_x矩阵和als q值的变化。我也尝试了SUB comand,但它不起作用。对于ii=1:4 T_val=subs(T_x,'q%d',ii',q(ii))结束,但在每个步骤中它都忘记了前面的步骤(如果ii=2,它将q1作为q1(而不是0))@user70299您可以一次替换所有的q,无需在循环中执行。有不同的
T_x
矩阵和不同的
q
,这没关系。您可以拥有所需的任意多个功能。您甚至可以通过
eval
对字符串进行赋值,以编程方式生成函数。请用您正在使用的确切代码的详细信息修改问题。不要把代码放在注释中——把整个代码,复制到octave/matlab中,放到问题中,这样我们就可以看到您正在尝试做什么。
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