Unable to perform assignment because the size of the left side is 3-by-1 and the size of the right side is 4-by-1. X(:,1)=Xint is showing the error

1 visualizzazione (ultimi 30 giorni)
A=[-0.01613 0 0.04348 0; 0 -0.01111 0 0.03333; 0 0 -0.04348 0; 0 0 0 -0.03333];
B=[0.08325 0; 0 0.06281; 0 0.04786; 0.03122 0];
C=[0.5 0 0 0; 0 0.5 0 0; 0 0 0.5 0; 0 0 0 0];
D=zeros(4,2);
t=2000;
T=1:1:t;
Q1=3*ones(t,1);
Q2=3*ones(t,1);
u=[Q1 Q2];
sys=ss(A,B,C,D);
sys_dis=c2d(sys,1);
%y=lsim(sys_dis,u,T);
%plot(y)
Ad=sys_dis.a;
Bd=sys_dis.b;
Cd=sys_dis.c;
Dd=sys_dis.d;
Xint=[0;0;0;0];
X(:,1)=Xint;
for i=1:1:t-1
[ Y(:,i+1), X(:,i+1) ] = output_cal(Ad,Bd,Cd,Dd,(u(i,:))',X(:,i) );
end

Risposta accettata

Walter Roberson
Walter Roberson il 25 Nov 2020
you have an existing variable named X that is interfering with your code
  3 Commenti
Walter Roberson
Walter Roberson il 25 Nov 2020
X(:,1)=Xint;
Suppose that at point X already exists and is 3 rows tall, then you would get the error message you are getting.
You are using a script rather than a function, so X could be anything that just happened to be in memory.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Programming in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by