Simple substitutions using symbolic computing in MATLAB

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?

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

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})

(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.)