Matlab将符号变量转换为数组
Matlab converting symbolic variable into array
我想将根据符号变量 x
定义的函数转换为数组。我的 MWE 是:
syms x
f = x.^2;
x = linspace(-10,10,100);
f1 = double(f);
我尝试使用 double
命令,但出现错误
Error using symengine
Unable to convert expression into double array.
Error in sym/double (line 692)
Xstr = mupadmex('symobj::double', S.s, 0);
我不确定这意味着什么以及如何解决它。
- 在应用
double()
之前用它的给定值替换 x
使用
subs()
vpa()
有类似的功能
与double()
相比,使用vpa()
的优势在于您可以设置
小数精度自己做
代码如下
syms x
f = x.^2;
x = linspace(-10,10,10);
f1 = subs(f);
f2 = double(f1)
f3 = vpa(f1, 8)
double()
输出:固定小数点后位数
f2 = [100.0000 60.4938 30.8642 11.1111 1.2346 1.2346 11.1111
30.8642 60.4938 100.0000]
vpa()
输出:可调小数点后位数,这里精度调整为8
f3 =[ 100.0, 60.493827, 30.864198, 11.111111, 1.2345679, 1.2345679, 11.111111,
30.864198, 60.493827, 100.0]
有几种方法可以做到这一点。从 symfun
开始:
syms x
f = symfun(x.^2, x);
xv = linspace(-10,10,100);
f1 = double(f(xv));
这相当于:
syms x % or: syms f(x)
f(x) = x.^2;
xv = linspace(-10,10,100);
f1 = double(f(xv));
备选方案是使用 Adam 建议的 subs
方法。
我想将根据符号变量 x
定义的函数转换为数组。我的 MWE 是:
syms x
f = x.^2;
x = linspace(-10,10,100);
f1 = double(f);
我尝试使用 double
命令,但出现错误
Error using symengine
Unable to convert expression into double array.
Error in sym/double (line 692)
Xstr = mupadmex('symobj::double', S.s, 0);
我不确定这意味着什么以及如何解决它。
- 在应用
double()
之前用它的给定值替换x
使用subs()
vpa()
有类似的功能与
double()
相比,使用vpa()
的优势在于您可以设置 小数精度自己做
代码如下
syms x
f = x.^2;
x = linspace(-10,10,10);
f1 = subs(f);
f2 = double(f1)
f3 = vpa(f1, 8)
double()
输出:固定小数点后位数
f2 = [100.0000 60.4938 30.8642 11.1111 1.2346 1.2346 11.1111
30.8642 60.4938 100.0000]
vpa()
输出:可调小数点后位数,这里精度调整为8
f3 =[ 100.0, 60.493827, 30.864198, 11.111111, 1.2345679, 1.2345679, 11.111111,
30.864198, 60.493827, 100.0]
有几种方法可以做到这一点。从 symfun
开始:
syms x
f = symfun(x.^2, x);
xv = linspace(-10,10,100);
f1 = double(f(xv));
这相当于:
syms x % or: syms f(x)
f(x) = x.^2;
xv = linspace(-10,10,100);
f1 = double(f(xv));
备选方案是使用 Adam 建议的 subs
方法。