从MuPAD到Matlab的多项式提取

从MuPAD到Matlab的多项式提取,matlab,export,polynomial-math,mupad,Matlab,Export,Polynomial Math,Mupad,我有一个变量,几个参数。我想以某种方式将其提取到Matlab中 MuPAD中的多边形示例: poly((-7/(2*k^2))*X^2 + ((7*(b + k))/(2*k^2) + (7*(b + 2*k))/(2*k^2) + 4/k)*X + (- (b + k)*((7*(b + 2*k))/(2*k^2) + 4/k) + 1), [X]) 我想在Matlab中得到它: x*((7*(b + k))/(2*k^2) + (7*(b + 2*k))/(2*k^2) + 4/k) -

我有一个变量,几个参数。我想以某种方式将其提取到Matlab中

MuPAD中的多边形示例:

poly((-7/(2*k^2))*X^2 + ((7*(b + k))/(2*k^2) + (7*(b + 2*k))/(2*k^2) + 4/k)*X + (- (b + k)*((7*(b + 2*k))/(2*k^2) + 4/k) + 1), [X])
我想在Matlab中得到它:

x*((7*(b + k))/(2*k^2) + (7*(b + 2*k))/(2*k^2) + 4/k) - (7*x^2)/(2*k^2) - (b + k)*((7*(b + 2*k))/(2*k^2) + 4/k) + 1
有什么简便的方法吗? P.S.Matlab R2015a

您可以使用该函数为任何表达式创建Matlab代码。 要打印不带引号的函数调用,可以使用print。 一个小例子:

p := -7*X^2 + 8*X + 1
print(Unquoted, generate::MATLAB(p))
返回

t0 = X*8.0-X^2*7.0+1.0;

这是该函数的正确MATLAB语法。

我相信您希望将域的MuPAD对象转换为通用符号表达式。您可以使用该函数进行此操作。我假设您已经在Matlab中从MuPAD中开始工作,它只是exprp1:

返回

p2 =

X*((7*b + 7*k)/(2*k^2) + (7*b + 14*k)/(2*k^2) + 4/k) - (b + k)*((7*b + 14*k)/(2*k^2) + 4/k) - (7*X^2)/(2*k^2) + 1
f = 

    @(b,k,X)-(b+k).*(1.0./k.^2.*(b.*7.0+k.*1.4e1).*(1.0./2.0)+4.0./k)+X.*(1.0./k.^2.*(b.*7.0+k.*7.0).*(1.0./2.0)+1.0./k.^2.*(b.*7.0+k.*1.4e1).*(1.0./2.0)+4.0./k)-X.^2.*1.0./k.^2.*(7.0./2.0)+1.0
您还可以使用将上述形式p1或p2转换为矢量化浮点函数句柄,例如:

f = matlabFunction(p1,'Vars',{b k X})
返回

p2 =

X*((7*b + 7*k)/(2*k^2) + (7*b + 14*k)/(2*k^2) + 4/k) - (b + k)*((7*b + 14*k)/(2*k^2) + 4/k) - (7*X^2)/(2*k^2) + 1
f = 

    @(b,k,X)-(b+k).*(1.0./k.^2.*(b.*7.0+k.*1.4e1).*(1.0./2.0)+4.0./k)+X.*(1.0./k.^2.*(b.*7.0+k.*7.0).*(1.0./2.0)+1.0./k.^2.*(b.*7.0+k.*1.4e1).*(1.0./2.0)+4.0./k)-X.^2.*1.0./k.^2.*(7.0./2.0)+1.0

对于那些将此标记为“不清楚”的人:这个问题非常清楚——也许您从未使用过MuPAD?