Drexel dragonThe Math ForumDonate to the Math Forum



Search All of the Math Forum:

Views expressed in these public forums are not endorsed by Drexel University or The Math Forum.


Math Forum » Discussions » Software » comp.soft-sys.matlab

Topic: Attempted to access; index out of bounds because size.
Replies: 2   Last Post: Dec 14, 2012 3:02 PM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]
Chiara Poggi

Posts: 1
Registered: 12/6/12
Attempted to access; index out of bounds because size.
Posted: Dec 6, 2012 5:20 AM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply

My code is:

clear
N=2; %dimensione di lavoro
x0=input ('inserisci il punto iniziale:'); %valore iniziale
x=x0;
xit=x';
k=0;
delta0=1.0; %passo
theta=0.5; %correzione del passo
epsilon=1e-3; %precisione che vogliamo
maxnv=100; %massimo numero di vettori che vogliamo generare
deltak=delta0;
vector_count=0; %azzero il contatore dei vettori
%adesso cominciamo il ciclo del random walk
%questo ciclo viene ripetuto finchè il deltak è maggiore di epsilon
while (deltak>epsilon)
r=[1;1];
while (norm(r)>1.0)
r=random('unif',-1,1,N,1) %compreso nell'intervallo -1 e 1, di dimensioni Nx1
end
%una volta generato il vettore lo si deve normalizzare
u=r/norm(r)
x1=x+deltak*u
%adesso dobbiamo imporre che il vettore è accettabile se la funzione
%calcolata in quel punto è minore di quella al punto precedente
if (f(x1)<f(x))
x=x1 %il valore che ho trovato diventa il mio x0
xit=[xit;x'];
vector_count=0; %riazzero il contatore dei vettori
else
vector_count=vector_count+1
end

if (vector_count>maxnv)
vector_count=0
deltak=deltak*theta
end
k=k+1
end
minimo=x
k

vel=[];
for j=1:k
veloc=norm(xit(j+1,:)'-x)/norm(xit(j,:)'-x);
vel=[vel;j veloc];
end
vel
plot(vel(:,1), vel(:,2), '-*')

when it runs i have this following message error:
Attempted to access xit(36,:); index out of bounds because size(xit)=[35,2].
Error in randomwalkmodificatodame (line 45)
veloc=norm(xit(j+1,:)'-x)/norm(xit(j,:)'-x);

Do someone know why?



Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© Drexel University 1994-2014. All Rights Reserved.
The Math Forum is a research and educational enterprise of the Drexel University School of Education.