How to solve Maximum recursion limit of 500 reached problem
167 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Jia Zhen
le 13 Nov 2014
Commenté : Walter Roberson
le 30 Mar 2016
Dear all, my matlab function is this
function eyescript(func, begin_in, end_in, args, ext)
if func==0
for i=begin_in;
fn=strcat(num2str(i),ext);
fprintf('\nRunning %s\n',fn);
symeye(fn,args(1),args(2),args(3),args(4));
end
else
for i=begin_in;
fn=strcat(num2str(i),ext);
fprintf('\nRunning %s\n',fn);
avgeye(fn,args(1), args(2));
end
end
when i want to call out this function eyescript i keep getting this error
eyescript(0,1,30,[0,0,0,0],'.jpg');
Maximum recursion limit of 500 reached. Use set(0,'RecursionLimit',N) to
change the limit. Be aware that exceeding your available stack space can crash
MATLAB and/or your computer.
Error in eyescript
What should i do to prevent this error from happening? Thanks in advance.
3 commentaires
bnut-qwerty@mail.ru bnut-qwerty@mail.ru
le 30 Mar 2016
Modifié(e) : Walter Roberson
le 30 Mar 2016
Maximum recursion limit of 500 reached. Use set(0,'RecursionLimit',N) to change the limit. Be
aware that exceeding your available stack space can crash MATLAB and/or your computer.
Programme:
puma560;
robot=p560
N=5; % Numero de Iteraciones
z=linspace(0.432,0.482,N); % se mueve 0.05 unidades
x=zeros(1,N);
y=x;
for j=1:N
y(1,j)=-0.15;
x(1,j)=0.452;
end
phi=zeros(1,N);
for k=1:length(z)
phik=phi(k);
T(:,:,k)=[cos(phik) -sin(phik) 0 x(k);
sin(phik) cos(phik) 0 y(k);
0 0 1 z(k);
0 0 0 1];
end
qzz=ikine(robot,T)
plot(robot,qzz)
y=linspace(-0.15,0.05,N); % se mueve 0.20 unidades
x=zeros(1,N);
z=x;
for j=1:N
x(1,j)=0.452;
z(1,j)=0.482;
end
phi=zeros(1,N);
for k=1:length(y)
phik=phi(k);
T(:,:,k)=[cos(phik) -sin(phik) 0 x(k);
sin(phik) cos(phik) 0 y(k);
0 0 1 z(k);
0 0 0 1];
end
qyy=ikine(robot,T)
plot(robot,qyy)
x=linspace(0.452,0.702,N); % se mueve 0.25 unidades
y=zeros(1,N);
z=y;
for j=1:N
y(1,j)=0.05;
z(1,j)=0.482;
end
phi=zeros(1,N);
for k=1:length(x)
phik=phi(k);
T(:,:,k)=[cos(phik) -sin(phik) 0 x(k);
sin(phik) cos(phik) 0 y(k);
0 0 1 z(k);
0 0 0 1];
end
qxx=ikine(robot,T)
plot(robot,qxx)
y=linspace(0.05,-0.05,N); % se mueve 0.10 unidades
x=zeros(1,N);
z=x;
for j=1:N
x(1,j)=0.702;
z(1,j)=0.482;
end
phi=zeros(1,N);
for k=1:length(y)
phik=phi(k);
T(:,:,k)=[cos(phik) -sin(phik) 0 x(k);
sin(phik) cos(phik) 0 y(k);
0 0 1 z(k);
0 0 0 1];
end
qyy=ikine(robot,T)
plot(robot,qyy)
Walter Roberson
le 30 Mar 2016
You opened a Question about this, so it will be discussed in that Question.
Réponse acceptée
Ken Atwell
le 14 Nov 2014
A recursion depth of 500 is "absurd", almost surely indicating a problem in the code and not some limitation in MATLAB. The recursion could be in symeye -- does it call itself, or call eyescript? Recursion problems can be tricky to debug. I recommend:
- Set breakpoint at the beginning of eyescript and run to it.
- Step OVER the calls to MATLAB functions like strcat and fprintf.
- Step IN to the call to symeye
- Continue this pattern until the program takes an unexpected turn.
PS: I second Adam's comment about your 'for' loop, it is likely not what you intend.
0 commentaires
Plus de réponses (0)
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!