我在matlab中使用符号创建了一个2x2矩阵。由于符号(x),所有值都转换为整数,例如
T14 =
[ 1, - x - 8070491064644575/4503599627370496]
[ 0, 1]
而不是
T14 =
[ 1, - x - 1.7920]
[ 0, 1]
使用
创建最终矩阵M = B16*T15*B15*T14*B14*T13*B13*T12*B12*T11*B11*T10
并且主要包含值
5098902830068945997216661558291421977734221147306628926962736786585701268374390522728433444885024747513/17917957937422433684459538244547554224973163977877196279199912807710334969441287563047019946172856926208
我现在想要将所有整数值转换为double值,同时保持符号x。简单double
失败,因为M
包含符号。如何将整个矩阵转换为类似matlab的matlab?
答案 0 :(得分:1)
如果你的意思是你有一个没有设定值的符号我担心这是不可能的,但是因为你问我猜你知道你在这里做了什么。
可以在投射之前评估表达式:
syms x y;
y = subs(y,2); x=subs(x,[1,57/17;45/13,y*11]);
a = subs(x,'y',2);
b = double(a);
在投射
之前,也可以在表达式上使用eval
syms x y;
y = subs(y,2); x=subs(x,[1,57/17;45/13,y*11]);
a = eval(x);
b = double(a);
不确定是否推荐这种方法,但它适用于这种情况。