index out of bounds

hey i want to ask u about tht probelm i found when i was working on my program
it gives me tht problem
Attempted to access w(2); index out of bounds because numel(w)=1.
Error in ==> MCC_pp1 at 69
e3=w(k+1);
and i will five u my program to help me to correct tht problem plz
clear all;
%commande d'une machine cc
% Les parametres --------------------------------------------------
Pn = 3500;
wn = 183.26;
Van = 240;
Ian = 16;
Vfn = 300;
Ra = 2.581;
La = 0.028;
Rf = 281.3;
Lf = 156;
M = 0.9483;
J = 0.02215;
f = 0.002953;
Ka = 1.0113; % 0.9483;
%conditions initiales ----------------------------------------------
Vf = 300;
tetaref = 100 * pi / 180;
If = Vf / Rf;
Ia = 0;
w = 1;
teta= 0;
T = 0.001;
Np = 800;
% Criteres de conception -------------------------------------------
ts = 0.05; % Settling time < 0.05 second
Mp = 0.05; % Overshoot < 5%
Ess = 0.1;
xi = sqrt((log(Mp))^2 / (pi^2 + (log(Mp))^2));
wn = - log(Ess) / ( xi * ts );
alpha = -1;
K=0.5;
K1=alpha*wn^2;
K2=wn^2+2*xi*wn*alpha;
K3=2*xi*wn+alpha;
a1=(-Rf/Lf);
a2=(-Ra/La);
a3=(M/La);
a4=(-f/J);
a5=(M/J);
b1=(1/Lf);
b2=(1/La);
x1=teta;
x2=w;
x3=Ia;
x4=If;
b0=a5*x4*b2;
x4_etoile=Vf/Rf;
K_0=[K1 K2 K3];%K_0 gain%
Cr=10;
C0=(-1/J)*Cr;
% calcul des U1 et U2 et V -----------------------------------------
for k = 1:Np
Cr = 0;
if k >= 400
Cr = 10;
end
e4=x4-x4_etoile;
U2=(1/b1)*((a1*x4)-(K*e4));
f=(a4)^2*x1-a4*a5*x3*x4+a4*C0-a5*x4*a2*x3+a3*a5*(x4)^2*x2-a1*a5*x3*x4+a5*x3*b1*U2;
e1=teta(k)-tetaref;
e2=w(k);
e3=w(k+1);
e=[e1;e2;e3];
V=-(K_0)*e;
U1=(1/b0)*(-f+V);
If(k+1) = If(k) + T * ( - Rf * If(k) + U2(k) ) / Lf;
Ia(k+1) = Ia(k) + T * ( - Ra * Ia(k) - M * If(k) * w(k) + U1(k) ) / La; %#ok<SAGROW>
teta(k+1) = teta(k) + T * w(k); %#ok<SAGROW>
Ce(k) = M * If(k) * Ia(k); %#ok<SAGROW>
w(k+1) = w(k) + T * ( -f * w(k) + C0(k) - Cr ) / J; %#ok<SAGROW>
end;

 Accepted Answer

Walter Roberson
Walter Roberson on 28 Mar 2013

0 votes

You initialize w=1 which is a scalar. You use that w(1) in e2=w(k) when k is 1. Then in the next line you use e3=w(k+1), but when k=1 you have no w(2) defined. What value were you expecting to have assigned to e3 at that point?

More Answers (1)

noureddine kebaili
noureddine kebaili on 28 Mar 2013

0 votes

e3 is the integral of e2 friend

Categories

Find more on Software Development Tools in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!