Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Thread Subject:
Attempted to access; index out of bounds because size.

Subject: Attempted to access; index out of bounds because size.

From: Chiara Poggi

Date: 6 Dec, 2012 10:20:08

Message: 1 of 3

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?

Subject: Attempted to access; index out of bounds because size.

From: Torsten

Date: 6 Dec, 2012 11:36:08

Message: 2 of 3

"Chiara Poggi" <kiara90rm@yahoo.it> wrote in message <k9prgo$4tt$1@newscl01ah.mathworks.com>...
> 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?

You reference xit(36,:) in your last loop over j
> for j=1:k
> veloc=norm(xit(j+1,:)'-x)/norm(xit(j,:)'-x);
> vel=[vel;j veloc];
> end
, but the size of the array "xit" is only [35,2].
So which value should MATLAB use for xit(36,:) if the corresponding elements do not exist ?

Best wishes
Torsten.

Subject: Attempted to access; index out of bounds because size.

From: Pat Bonanni

Date: 14 Dec, 2012 20:02:08

Message: 3 of 3

Chiara,did you solve then the randomwalk?

Tags for this Thread

No tags are associated with this thread.

What are tags?

A tag is like a keyword or category label associated with each thread. Tags make it easier for you to find threads of interest.

Anyone can tag a thread. Tags are public and visible to everyone.

Contact us