Why do i get the error "Dimensions of arrays being concatenated are not consistent"

조회 수: 1 (최근 30일)
Why do I get this error for one but not the other even though the two codes are the exact same.
This one runs fine:
clear all; close all
% Initial Conditions
th= 0.01*pi/180; % initial theta position (rad)
w=0; % inital theta velocity (rad/s)
g=9.81; %gravity constant (m/s^2)
L=0.3; % length of bar (m)
mB=2; % mass of bar (kg)
mA=1; %mass of collar (kg)
dt=.001;
I = (mB*L^2)/12;
Wa=mA*g;
Wb=mB*g;
x=(mB*L)/2;
z=(L/2);
for ii = 1:5000
A = [-1 0 0 -mA 0
0 -1 1 0 0
1 0 0 -mB -x*cos(th)
0 1 0 0 x*sin(th)
sin(th)*z -cos(th)*z 0 0 -I];
B = [0; Wa; x*(w)^2*sin(th); Wb-x*(w)^2*cos(th); 0];
X=inv(A)*B;
w = w + X(5)*dt;
th=th + w*dt;
time(ii)= ii*dt;
theta(ii)=th;
alpha(ii)= X(5);
omega(ii)=w;
Rx(ii)=X(1);
Ry(ii)=X(2);
N(ii)=X(3);
d_acc(ii)=X(4);
end
But this one gives me an error:
clear all; close all
% Initial Conditions
theta= 0.01*pi/180; % initial theta position (rad)
theta_V=0; % inital theta velocity (rad/s)
g=9.81; %gravity constant (m/s^2)
L=0.3; % length of bar (m)
mB=2; % mass of bar (kg)
mA=1; %mass of collar (kg)
dt=.001;
I = (mB*L^2)/12;
Wa=mA*g;
Wb=mB*g;
x=(mB*L)/2;
z=(L/2);
for i = 1:5000
A = [-1 0 0 -mA 0;
0 -1 1 0 0;
1 0 0 -mB (-x*cos(theta))
0 1 0 0 x*sin(theta)
(sin(theta)*z) (-cos(theta)*z) 0 0 -I];
B = [0; Wa; x*(theta_V)^2*sin(theta); Wb-x*(theta_V)^2*cos(theta); 0];
X=inv(A)*B;
theta_V = theta_V + X(5)*dt;
theta=theta + theta_V*dt;
time(i)= i*dt;
theta(i)=theta;
theta_a(i)= X(5);
omega(i)=theta_V;
Rx(i)=X(1);
Ry(i)=X(2);
N(i)=X(3);
d_acc(i)=X(4);
end
I was changing my code from the one that worked because I realized I messed up my dynamic equations and I ended up with the same error I mention in the title When I was trying to debug it by backtracking I realized that even my original code was giving me an error. I had another file saved with my orignal code and it runs.

채택된 답변

William
William 2021년 3월 23일
The problem in the second program is the statement 'theta(i) = theta', which is changing theta from a scalar into a vector. Then on the second iteration for the for-loop, the matrix A has some elements that are now vectors.
  댓글 수: 1
Umut Ayyildiz
Umut Ayyildiz 2021년 3월 23일
I see what you mean, in the first code theta is being saved into another variable so when it goes to the next iteration it isnt a vector but still a scalar. Thank you!

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Inertias and Loads에 대해 자세히 알아보기

태그

제품

Community Treasure Hunt

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

Start Hunting!

Translated by