cylee
cylee

Reputation: 1

Matlab symbolic function conversion without dot for matrix operation

When converting symbolic expression to matlabFunction, expression like

x=sym('x')
f=- x^3/6 + x
g=matlabFunction(f)

-> @(x)x-x.^3.*(1.0./6.0) 

which is not what I want because x is gonna be a matrix and my application requires actual matrix multiplication such as x^3 instead of the dot product form of x.^3

The only way to get it working is to use anonymous function, i.e.

g=@(x) - x^3/6 + x

->@(x)-x^3/6+x

However, the issue with anonymous function is that I cannot use substitution but to type the entire formulation, i.e.

g=@(x) f 

-> @(x)f  which shows that expression substitution does not work

In short, I will need to solve either one of the technical difficulties: (1) If I use matlabFunction, how do I remove all the dot after the conversion? or (2) If I use anonymous function, how do I bypass typing the symbolic expression if I have already defined 'f' for the expression?

I am totally lost here and I hope someone familiar with matlab can give me 2 cents.

Thank you!

Upvotes: 0

Views: 126

Answers (1)

AVK
AVK

Reputation: 2149

You can convert the sym object to a string when calculating the anonymous function:

g=@(x)eval(char(f))

Alternatively, you can use the following code

h=eval(['@(x)' char(f)])

instead of matlabFunction

Upvotes: 1

Related Questions