how can i solve this probleme :??? Attempted to access degree(100); index out of bounds because numel(degree)=1
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
ali hadjer
el 7 de Nov. de 2015
Editada: Geoff Hayes
el 7 de Nov. de 2015
hello i have this msg :
??? Attempted to access degree(100); index out of bounds because numel(degree)=1.
Error in ==> untitled>pushbutton4_Callback at 397
degree(i)=degree(i)+1;% CALCULE LEs nombre de neighbord( DEGRE) DES NOEUDS
REDONDANTS
with this code :
degree=[];
if isfield(handles,'net')
for i = 1:numel(handles.net(1,:))
degree(i)=0;
for j = 1:numel(handles.net(1,:))
X1 = handles.net(2,i);
Y1 = handles.net(3,i);
X2 = handles.net(2,j);
Y2 = handles.net(3,j);
xSide = abs(X2-X1);
ySide = abs(Y2-Y1);
d = sqrt(xSide^2+ySide^2);% distance euclidienne
DD(:,i)=d;
%disp(DD);
%RESORTIR LES NOEUD REDONDANTS
if (d<=2*(handles.r))&&(i~=j)
degree(i)=degree(i)+1;% CALCULE LEs nombre de neighbord( DEGRE) DES NOEUDS REDONDANTS
disp(degree(i));
plot([X1,X2],[Y1,Y2],'o','LineWidth',0.1);
% ((X1,Y1),(X2,Y2))= mat_redondant;
%disp(mat_redondant);
hold on;
for i = 1:numel(handles.net(1,:))
for j = 1:numel(handles.net(1,:))
if (d<=2*(handles.r))&&(i~=j)
if (max(degree))&&(min(handles.d_sink))
plot([X1,X2],[Y1,Y2],'o','LineWidth',0.1);
end
end
end
end
0 comentarios
Respuesta aceptada
Geoff Hayes
el 7 de Nov. de 2015
Editada: Geoff Hayes
el 7 de Nov. de 2015
ali - you may want to verify that the above code is correct because from the looks of it, there are four for loops that are using duplicated indexing variables. I recommend that you use different indexing variables for all of your for loops, and try to avoid using i and j since MATLAB uses them to represent the imaginary number.
As for your error message, it is telling you that you are trying to access the 100th element in an array that is 1x1. I suspect that is is because of your third for loop using an indexing variable of i which is the same as the outer for loop. Consider the following example
for m=1:10
for n=1:10
fprintf('m=%d n=%d\n',m,n);
for m=1:5
end
end
end
If we consider the output from the first handful of iterations of the inner for loop we see that
m=1 n=1 % this is correct for m and n
m=5 n=2 % m is incorrect!! should be 1 still!!
m=5 n=3
m=5 n=4
m=5 n=5
m=5 n=6
m=5 n=7
0 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Call Web Services from MATLAB Using HTTP en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!