如何将matlab中的sym数据类型转换为double型

我想要具体的命令

使用double函数

比如
>> root=solve('x^2+5*x-10')

root =

-5/2+1/2*65^(1/2)
-5/2-1/2*65^(1/2)

>> class(root)

ans =

sym

>> root=double(root)

root =

1.5311
-6.5311

>> class(root)

ans =

double

%by dynamic
%see also http://www.matlabsky.com
%contact me [email protected]
%2009.2.
%
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-09-18
一般来说用dec2hex及hex2dec就可以。

ss='010600001388849C';
ssDec = hex2dec(ss);
ssHex = dec2hex(ssDec);
format hex;
disp(ssHex);

不过前提是你的机器能处理这么大的数。
我用小一点的数比如说ss='01600001388849C'测试的结果是没问题的,但是我的机器不能处理大于2^52的数,所以很抱歉无法完成你给出的这个例子。

====================================
补充回答:
拆分合并的方法试了试, 但是不知道你究竟要怎么用,也没有继续;希望你能把问题描述的更详细一点,特别是最终目的是干什么。

Matlab中关于大数处理有几个方法
1.调用maple内核运算,但是我的matlab版本中没有;
2.拆分合并,ss(1)~ ss(16)依次对应'010600001388849C' 中的各个位上的数,可以考虑用上。
3.换Ubuntu Linux,可支持8G内存运算,也许可行。
4.实在没有适合方法,就只能改算法了。

你试试下面这样的写法可不可以:
A = [1; 06; 0; 0; 19; 136; 132; 156];
fwrite(s, A, 'char', 'async');

其中,A是对应你要输入的'010600001388849C' 这个十六进制数的十进制表示,你用dec2hex(A)可以得到
01
06
00
00
13
88
84
9C.
有可能还有问题,不过你可以尝试在这个思路上再改改。

====================================
第2个回答  2019-01-14
可以直接使用double函数:
例子如下:
symn
=
sym([pi
1/3]);
%生成一个符号矩阵
doublen
=
double(symn)
%将符号矩阵转换为double数组