I want to round the results to 4 numbers after the decimal point, but when I run, i get the following error messages like image below:
syms A1 B1 A2 B2 A3 B3 A4 B4
eq1 = A1*log(4)+B1==341;
eq2 = A4*log(10)+B4==0;
eq3 = A1*log(6)+B1==6*A2+B2;
eq4 = 7*A2+B2==A3*(49/2)+B3;
eq5 = 32*A3+B3==A4*log(8)+B4;
eq6 = A1/600-A2/6==0;
eq7 = A2-A3==0;
eq8 = A3/8-A4/8000==0;
eq = [eq1,eq2,eq3,eq4,eq5,eq6,eq7,eq8];
var = [A1, B1, A2, B2, A3, B3, A4, B4];
[A1, B1, A2, B2, A3, B3, A4, B4] = solve(eq, var)
matr = [A1 B1 A2 B2 A3 B3 A4 B4];
result = round(matr,4)

 채택된 답변

Alberto Cuadra Lara
Alberto Cuadra Lara 2022년 4월 23일

1 개 추천

Maybe the round function was not compatible with symbolic variables on previous version.
Try this approach:
  1. Convert matr to float using vpa
  2. Use round function
syms A1 B1 A2 B2 A3 B3 A4 B4
eq1 = A1*log(4)+B1==341;
eq2 = A4*log(10)+B4==0;
eq3 = A1*log(6)+B1==6*A2+B2;
eq4 = 7*A2+B2==A3*(49/2)+B3;
eq5 = 32*A3+B3==A4*log(8)+B4;
eq6 = A1/600-A2/6==0;
eq7 = A2-A3==0;
eq8 = A3/8-A4/8000==0;
eq = [eq1,eq2,eq3,eq4,eq5,eq6,eq7,eq8];
var = [A1, B1, A2, B2, A3, B3, A4, B4];
[A1, B1, A2, B2, A3, B3, A4, B4] = solve(eq, var);
matr = [A1 B1 A2 B2 A3 B3 A4 B4];
result = vpa(matr, 32);
result = round(result, 4)
result = 

댓글 수: 1

The old error still appears. I replaced the last command and it run:
fprintf('%0.4f\n',matr)
Thanks for your help!

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Alberto Cuadra Lara
Alberto Cuadra Lara 2022년 4월 23일

1 개 추천

Hi Quy!
What version of MATLAB are you using? Your code works in MATLAB 2021b
syms A1 B1 A2 B2 A3 B3 A4 B4
eq1 = A1*log(4)+B1==341;
eq2 = A4*log(10)+B4==0;
eq3 = A1*log(6)+B1==6*A2+B2;
eq4 = 7*A2+B2==A3*(49/2)+B3;
eq5 = 32*A3+B3==A4*log(8)+B4;
eq6 = A1/600-A2/6==0;
eq7 = A2-A3==0;
eq8 = A3/8-A4/8000==0;
eq = [eq1,eq2,eq3,eq4,eq5,eq6,eq7,eq8];
var = [A1, B1, A2, B2, A3, B3, A4, B4];
[A1, B1, A2, B2, A3, B3, A4, B4] = solve(eq, var);
matr = [A1 B1 A2 B2 A3 B3 A4 B4];
result = round(matr, 4)
result = 

댓글 수: 1

Quy Hoang
Quy Hoang 2022년 4월 23일
편집: Quy Hoang 2022년 4월 23일
I'm using Matlab 2017b. Do you have an alternative command to make it run?

댓글을 달려면 로그인하십시오.

Jan
Jan 2022년 4월 23일

0 개 추천

result = round(matr * 10000) / 10000

카테고리

도움말 센터File Exchange에서 Logical에 대해 자세히 알아보기

제품

릴리스

R2017b

질문:

2022년 4월 23일

답변:

Jan
2022년 4월 23일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by