Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

New to MATLAB?

Round coefficients of symbols

Asked by Brian

Brian (view profile)

on 19 Jun 2013
Latest activity Answered by Image Analyst

Image Analyst (view profile)

on 7 Nov 2014

I have a solution matrix with equations and coefficients in front of symbols. I want to round them to a certain decimal.

example: X=[1.89545464564*S+0.00000085*M, 1.00000055*S-0.68129354234*M; 0.00000000345*S+0.00000346*M, 1.00004353*S+1.68129354234*M];

How to round the coefficients that are in front of S and M in my matrix to something like 2 or 3 decimal places.

Thank you!

0 Comments

Brian

Brian (view profile)

Products

No products are associated with this question.

3 Answers

Answer by Andrei Bobrov

Andrei Bobrov (view profile)

on 19 Jun 2013
syms M S
 X=[1.89545464564*S+0.00000085*M, 1.00000055*S-0.68129354234*M; 0.00000000345*S+0.00000346*M, 1.00004353*S+1.68129354234*M];
out = vpa(X,4);

0 Comments

Andrei Bobrov

Andrei Bobrov (view profile)

Answer by Brian

Brian (view profile)

on 6 Nov 2014

That is close, but not quite what I was looking for. The output of your code provided is:

--------------------------------------------------

out = [ 0.00000085*M + 1.895*S, 1.0*S - 0.68129354234042693860828876495361*M;

0.00000346*M + 0.00000000345*S, 1.681*M + 1.0*S]

--------------------------------------------------

I want the 0.00000085 and similar numbers to just say 0, disappear, or say 0.000*S. Also I'm unsure why the 0.68129354234 coefficient does not get rounded. It does round if the sign were positive instead of negative.

My desired output would be:

--------------------------------------------------

out = [ 1.895*S + 0.000*M, 1.000*S - 0.6813*M;

0.000*S + 0.000*M, 1.000*S + 1.681*M]

_______________________________

ANSWER:

I used Digits(4) at the top of the code. This was the best I could do. Rounded everything to 4 significant figures. I was already using vpa earlier in the code as well.

0 Comments

Brian

Brian (view profile)

Answer by Image Analyst

Image Analyst (view profile)

on 7 Nov 2014

Use the second argument for round(). From the (R2014b) help for round():

Y = round(X,N) rounds to N digits:
N > 0: round to N digits to the right of the decimal point.
N = 0: round to the nearest integer.
N < 0: round to N digits to the left of the decimal point.

0 Comments

Image Analyst

Image Analyst (view profile)

Contact us