# Error 'To Many Output Arguments

3 views (last 30 days)
Ivan Dwi Putra on 11 Jun 2020
Commented: Ivan Dwi Putra on 11 Jun 2020
This is my code
clear; close; clc;
%Parameter Massa
m1 = 8095; % massa train set 1 dalam kg
m2 = 8500; % massa train set 2 dalam kg
g = 10;
c_0_1 = 0.01176;
c_1_1 = 0.00077616;
c_2_1 = 4.48 ;
c_0_2 = 0.01176 ;
c_1_2 = 0.00077616;
c_2_2 = 4.48;
v_0 = 300;
hstar = 120;
a_1 = -1./m1.*(c_1_1 + 2.*c_2_1.*v_0);
a_2 = -1./m2.*(c_1_2 + 2.*c_2_2.*v_0);
b = 1;
% Model data
A = sym(zeros(4,4));
display(A);
B = sym(zeros(4,2));
B(1,1) = -b*hstar;
B(2,1) = b;
B(3,2) = -b*hstar ;
B(4,1) = -b; B(4,2) = b;
display(B);
% Q and R matrices for ARE
Q = sym(eye(4)); display(Q);
R = sym(zeros(2,2)); R(1,:) = [1 2]; R(2,:) = [2 3]; display(R);
% Matrix S to find
svar = sym('s',[1 16]);
S = [svar(1:4); svar(5:8); svar(9:12); svar(13:16)];
S(2,1) = svar(2);
S(2,2) = svar(1);
S(2,4) = svar(2);
S(3,1) = svar(3);
S(3,2) = svar(7);
S(3,3) = svar(1);
S(4,1) = svar(4);
S(4,2) = svar(2);
S(4,3) = svar(12);
S(4,4) = svar(1);
display(S);
% LHS of ARE: A'*S + S*A' - S*B*Rinv*B'*S
left_ARE = transpose(A)*S + S*A - S*B*inv(R)*transpose(B)*S;
display(left_ARE);
% RHS of ARE: -Q
right_ARE = -Q;
display(right_ARE);
% subs(left_ARE,{s1, s2, s3}, {1, 5, 10})
% Find S in ARE
syms s1 s2 s3 s4 s7 s12
[Sol_S] = solve(left_ARE == right_ARE,s1,s2,s3,s4,s7,s12,'Real',true,'returnconditions',true)
The result like this
Sol_S =
struct with fields:
s1: [0×1 sym]
s2: [0×1 sym]
s3: [0×1 sym]
s4: [0×1 sym]
s7: [0×1 sym]
s12: [0×1 sym]
I want to find my value s using this code
D = [s1 s2 s3 s4 s7 s12];
D = [S.s1 S.s2 S.s3 S.s4 S.s7 S.s12];
But it said
Error using sym/subsref
Too many output arguments.
Error in ARE (line 78)
D = [S.s1 S.s2 S.s3 S.s4 S.s7 S.s12];

Ameer Hamza on 11 Jun 2020
The values of S are stored in the struct returned by solve(). The actual value of the symbolic variable does not change. So the correct syntax is
D = [Sol_S.s1 Sol_S.s2 Sol_S.s3 Sol_S.s4 Sol_S.s7 Sol_S.s12];
However, the result shows
Sol_S =
struct with fields:
s1: [0×1 sym]
s2: [0×1 sym]
s3: [0×1 sym]
s4: [0×1 sym]
s7: [0×1 sym]
s12: [0×1 sym]
that MATLAB is not able to find a solution. It is probably the case that a solution does not exist. Also, note that there are 16 equations and only 6 variables, so I guess the system is over-determined.

Ivan Dwi Putra on 11 Jun 2020
do I set my own R?
i use R
R = [1 2;
2 3;];
[X1,K1,L1] = icare(A,B,Q,R)
But still the X and K still no value
X1 =
[]
K1 =
[]
L1 =
0
0
-0.3134
-1.0087
Ameer Hamza on 11 Jun 2020
In this case, I think the equation is unsolvable for these particular matrices A, B, Q, and R.
Ivan Dwi Putra on 11 Jun 2020
ok thank you for helping me

R2020a

### Community Treasure Hunt

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

Start Hunting!