Suppose I have the following MATLAB code.

syms a b c1 c2

c1 = a + b + pi*b
c2 = a + b + 0.5*b

Then c1 gets evaluated to a + b + pi*b and c2 to a + (3*b)/2

However, I need MATLAB to calculate double-precision values for the coefficients for a and b and not just symbolic expressions.

How do I do this? e.g. I want c1 to be evaluated as a + 4.1416*b and c2 as a + 1.5*b.

Also, suppose I am interested in doing arithmetic like c1*c2, c1*5, I would like the coefficients of a and b to evaluated as numbers.

How should I do this?

  • $\begingroup$ @ChristianClason - feel free to move your comments to an answer. $\endgroup$ Nov 26, 2012 at 22:54
  • $\begingroup$ @AronAhmadia - done! $\endgroup$ Nov 27, 2012 at 11:45

1 Answer 1


To evaluate a symbolic expression numerically, you can use subs to insert numerical values for symbolic variables:

>> subs(c1,{a,b},{1.1,1.2})

ans =


(Note that as long as a and/or b are symbolic variables, I don't see a point in evaluating pi or 3/2 numerically. However, vpa seems to do what you want.)


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.