Taking error message in matlab

조회 수: 1 (최근 30일)
Ahmet Akcura
Ahmet Akcura 2022년 6월 21일
댓글: Ahmet Akcura 2022년 6월 21일
In the below, we have our matlab code but we are taking error and error massage is;
Error using ss (line 355)
The "A" and "B" matrices must have the same number of rows.
Error in lateral (line 34)
MSS = ss(A_lat,B_lat,C_lat,D_lat)
What should we do? If you have any suggestion for us, we will be very happy.
The code is ;
%parameters
Mach = 0.206;
U_zero = 70;
q_dot = 2997;
alpha_zero = 11.7;
gamma_zero = 0;
g = 9.81;
%lateral values
Y_b = -21.1;
L_dotb = -10.4;
L_dotp = -1.43;
L_dotr = 0.929;
N_dotb = 1.44;
N_dotp = -0.026;
N_dotr = -0.215;
Y_starsa = -0.004;
Y_starsr = 0.0053;
L_dotsa = 2.74;
L_dotsr = 0.7;
N_dotsa = 0.42;
N_dotsr = -0.67;
A_lat = [Y_b 0 -1 g/U_zero 0; L_dotb L_dotp L_dotr 0 0; N_dotb N_dotp N_dotr 0 0; 0 1 0 0 0; 0 0 1 0 0];
B_lat = [0 Y_starsr; L_dotsa L_dotsr; N_dotsa N_dotsr ; 0 0];
C_lat = [1 0 0 0; 0 1 0 0; 0 0 1 0; 0 0 0 1];
D_lat = [0; 0; 0; 0];
I = eye(4,4);
figure(3)
MSS = ss(A_lat,B_lat,C_lat,D_lat)
Transfer=tf(MSS)
step(MSS,3000)
grid on
  댓글 수: 4
Torsten
Torsten 2022년 6월 21일
편집: Torsten 2022년 6월 21일
Take away one row in A :-)
In the documentation of ss, the sizes of the input matrices to be compatible are listed:
Edward Tomanek
Edward Tomanek 2022년 6월 21일
I know what you mean, but all MATLAB is telling you is that all those matrices need to have the same number of rows for the function to work. I don't know the specifics of the example at hand but if matrix A_lat ends up having more rows there may be some way to convert it to having a lower number of rows?

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

답변 (1개)

Edward Tomanek
Edward Tomanek 2022년 6월 21일
Hi,
In the line:
MSS = ss(A_lat,B_lat,C_lat,D_lat)
You are using the state-space model, documentation found here https://uk.mathworks.com/help/control/ref/ss.html
Your error message is telling you that all the matrices need to have the same number of rows for this function to work. For example, using
A = [1, 2; 3, 4; 5, 6]
B = [2, 3; 4, 5]
would not work because A has 3 rows and B only has 2 (i.e. all the matrices need to have the same numbers of semi-colons).
Notice that in your definitions, B_lat, C_lat and D_lat all have 4 rows but A_lat has 5. That is what's causing the error.
Regards,
Edward
  댓글 수: 3
Steven Lord
Steven Lord 2022년 6월 21일
If A has 5 rows and B has 4 rows, the values A*x and B*u must have 5 and 4 rows respectively. Adding together matrices with different numbers of rows is not mathematically defined. I would double check that I'd copied the A_lat, B_lat, etc. matrices correctly from whatever paper / book / etc. I was trying to implement.
Ahmet Akcura
Ahmet Akcura 2022년 6월 21일
Thank you so much for your effort, I found my mistake :)

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

카테고리

Help CenterFile Exchange에서 MATLAB에 대해 자세히 알아보기

제품


릴리스

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by