how can i solve this probleme :??? Attempted to access degree(100); index out of bounds because numel(degree)=1

조회 수: 1 (최근 30일)
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

채택된 답변

Geoff Hayes
Geoff Hayes 2015년 11월 7일
편집: Geoff Hayes 2015년 11월 7일
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개)

카테고리

Help CenterFile Exchange에서 Call Web Services from MATLAB Using HTTP에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by