If statement is not working

조회 수: 1 (최근 30일)
Mehmet Volkan Ozdogan
Mehmet Volkan Ozdogan 2019년 7월 18일
댓글: Walter Roberson 2019년 7월 18일
Hi,
angle1 variable has data from 0 to 90 but is statemant is not working. For example if angle1>=3 and if angle1>=53 give same results.
I do not understand what is the problem.
Thank you...
angle1=abs(atand((newVar(:,3)-newVar5(:,3))./(newVar(:,1)-newVar5(:,1))))
[~,idx5] = pdist2(newVar2,newVar,'euclidean','smallest',1); % indices of nearest * for EACH X
newVar6=newVar2(idx5, :);
angle2=abs(atand((newVar6(:,3)-newVar5(:,3))./(newVar6(:,1)-newVar5(:,1))))
d2=pdist2(newVar5,newVar6);
dy=d2(:)
if angle1>=19
dxs=(sind(angle1).*dx);
dys=(sind(angle2).*dy);
def=dxs-dys
else
dxs=(cosd(angle1).*dx);
dys=(cosd(angle2).*dy);
def=dxs-dys
end
  댓글 수: 2
Chad Greene
Chad Greene 2019년 7월 18일
What are the newVars?
Mehmet Volkan Ozdogan
Mehmet Volkan Ozdogan 2019년 7월 18일
newVars is a matrice 100x3. they are coordinates...
Thanks

댓글을 달려면 로그인하십시오.

채택된 답변

Walter Roberson
Walter Roberson 2019년 7월 18일
In MATLAB, the test
if A > B
is treated the same as if it had been
if all(A(:) > B(:))
Your angle1 is a vector. Some of the elements of it are >= 19, but not all >= 19, so the if is not considered to be true.
When you are working with non-scalars, you should get in the habit of explicitly coding all() or any() to indicate which test you intend.
... But what you probably really need is to learn about logical indexing: see https://blogs.mathworks.com/steve/2008/01/28/logical-indexing/
  댓글 수: 6
Mehmet Volkan Ozdogan
Mehmet Volkan Ozdogan 2019년 7월 18일
Thank you for your advices Mr. Roberson
I have now understand what you mean and solved my problem
for i=(1:100)
if all(angle1(i)>=19)
dxs(i)=(sind(angle1(i)).*dx(i));
dys(i)=(sind(angle2(i)).*dy(i));
else
dxs(i)=(cosd(angle1(i)).*dx(i));
dys(i)=(cosd(angle2(i)).*dy(i));
end
def(i)=dxs(i)-dys(i)
end
Walter Roberson
Walter Roberson 2019년 7월 18일
Example:
Mask = x> 5;
Y(Mask) = sin(x(Mask))
Y(~Mask) = cos(x(~Mask))

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by