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