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

Round coefficients of symbols

Asked by Brian on 19 Jun 2013
Latest activity Answered by Image Analyst on 7 Nov 2014 at 0:39

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

Products

No products are associated with this question.

3 Answers

Answer by Andrei Bobrov 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
Answer by Brian on 6 Nov 2014 at 23:59

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
Answer by Image Analyst on 7 Nov 2014 at 0:39

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

Contact us