Error message: Too many input arguments

1 view (last 30 days)
Quy Hoang
Quy Hoang on 23 Apr 2022
Answered: Jan on 23 Apr 2022
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)

Accepted Answer

Alberto Cuadra Lara
Alberto Cuadra Lara on 23 Apr 2022
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 Comment
Quy Hoang
Quy Hoang on 23 Apr 2022
The old error still appears. I replaced the last command and it run:
fprintf('%0.4f\n',matr)
Thanks for your help!

Sign in to comment.

More Answers (2)

Alberto Cuadra Lara
Alberto Cuadra Lara on 23 Apr 2022
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 Comment
Quy Hoang
Quy Hoang on 23 Apr 2022
I'm using Matlab 2017b. Do you have an alternative command to make it run?

Sign in to comment.


Jan
Jan on 23 Apr 2022
result = round(matr * 10000) / 10000

Products


Release

R2017b

Community Treasure Hunt

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

Start Hunting!