Index of variable in a loop
조회 수: 1 (최근 30일)
이전 댓글 표시
Hello all,
As the short program below, when index i increase from 1 to size of coordExplore,
the coordExplore(i) does not indicate the coordExplore(rightPoint) or coordExplore(x1,y1,z1),
however, it shows only coordExplore(x1);
In the for loop, with index i, how can matlab understand coordExplore(1) = coordExplore(rightPoint) = (x1,y1,z1)
& coordExplore(2) = coordExplore(leftPoint) = (x2,y2,z2)?
%from initial 3D point (x y z) using treeExploreation fuction to create two new3D points with coordinates (x1,y1,z1) and (x2,y2,z2)
%then from these new point, using this function two create new four 3D_Points...
%x y z are scala
rightPoint = [x1,y1,z1];
leftPoint = [x2,y2,z2];
targetPoint = [x_t, y_t, z_t];
coordExplore = [rightPoint,leftPoint];
%store twop 3D points into coordExplore
temp = [];
flag = 1;
while (flag)
for i=1:length(coordExplore)
[newrightPoint,newleftPoint]=treeExploration(coordExplore(i)); %help me at here !!!!
%this function with input (x,y,z) output two new coordinates
if (newrightPoint==targetPoint) || (newleftPoint==targetPoint)
%this condition is to compare the output coordinates whether the same as the targetPoint
flag=0;
break;
else
temp =[newrightPoint,newleftPoint];
end
end
coordExplore = temp;
temp = [];
end
댓글 수: 4
Guillaume
2019년 10월 14일
First, whenever you write code, and particularly if you're going to ask questions on it, write comments explaining what the code is meant to do. It's difficult to help you if we don't have an overview of what you're trying to do.
As pointed out by Looky,
for i=1:size(coordExplore)
is already a problem. size always returns a vector and the colon operator will ignore all elements but the first. Since coordExplore is a row vector, the first element of size is always 1, so that loop is equivalent to
for i = 1:1
Then, it's unclear what you're trying to do with that loop and whether or not that loop is even needed. We don't know what treeExploration is, it could be a matrix, but more likely it's a function but what does it return? What is the size of the outputs?.
It would make sense that newRightPoint is a vector, similar to RightPoint, but in that case, you'll get an error with the || in your loop (it doesn't work with vectors), so maybe it's a scalar.
And if NewRightPoint is a vector, == is probably the wrong way to compare it to another vector.
And also, as pointed out by Fabio, exact comparison of floating point values is a dangerous thing to do. See for example that:
>> (0.1 + 0.1 + 0.1) == 0.3
ans =
logical
0
is false. To learn more about this do a search on floating point comparison.
Anyway, we need a lot more information to answer your question.
답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!