矩阵运算无点的Matlab符号函数转换
Matlab symbolic function conversion without dot for matrix operation
将符号表达式转换为matlabFunction时,表达式如
x=sym('x')
f=- x^3/6 + x
g=matlabFunction(f)
-> @(x)x-x.^3.*(1.0./6.0)
这不是我想要的,因为 x 将是一个矩阵,而我的应用程序需要实际的矩阵乘法,例如 x^3,而不是 x.^3
的点积形式
让它工作的唯一方法是使用匿名函数,即
g=@(x) - x^3/6 + x
->@(x)-x^3/6+x
然而,匿名函数的问题是我不能使用替换,而是键入整个公式,即
g=@(x) f
-> @(x)f which shows that expression substitution does not work
总之,我需要解决其中一个技术难点:(1)如果我使用matlabFunction,转换后如何去掉所有的点?或 (2) 如果我使用匿名函数,如果我已经为表达式定义了 'f',如何绕过键入符号表达式?
我一头雾水,希望熟悉matlab的朋友能给我2毛钱
谢谢!
计算匿名函数时可以将sym
对象转为字符串:
g=@(x)eval(char(f))
或者,您可以使用以下代码
h=eval(['@(x)' char(f)])
而不是matlabFunction
将符号表达式转换为matlabFunction时,表达式如
x=sym('x')
f=- x^3/6 + x
g=matlabFunction(f)
-> @(x)x-x.^3.*(1.0./6.0)
这不是我想要的,因为 x 将是一个矩阵,而我的应用程序需要实际的矩阵乘法,例如 x^3,而不是 x.^3
的点积形式让它工作的唯一方法是使用匿名函数,即
g=@(x) - x^3/6 + x
->@(x)-x^3/6+x
然而,匿名函数的问题是我不能使用替换,而是键入整个公式,即
g=@(x) f
-> @(x)f which shows that expression substitution does not work
总之,我需要解决其中一个技术难点:(1)如果我使用matlabFunction,转换后如何去掉所有的点?或 (2) 如果我使用匿名函数,如果我已经为表达式定义了 'f',如何绕过键入符号表达式?
我一头雾水,希望熟悉matlab的朋友能给我2毛钱
谢谢!
计算匿名函数时可以将sym
对象转为字符串:
g=@(x)eval(char(f))
或者,您可以使用以下代码
h=eval(['@(x)' char(f)])
而不是matlabFunction