필터 지우기
필터 지우기

Info

이 질문은 마감되었습니다. 편집하거나 답변을 올리려면 질문을 다시 여십시오.

Help tidying my code!

조회 수: 2 (최근 30일)
Alex
Alex 2014년 12월 23일
마감: MATLAB Answer Bot 2021년 8월 20일
if true
if navMemory.lastPos(1)>950
% targVel=-targVel;
% if navMemory.kk_temp >10
% navMemory.navState = 3;
% navMemory.kk_temp = 0;
% end
% elseif navMemory.lastPos(1)<-950
% targVel=-targVel;
% if navMemory.kk_temp >10
% navMemory.navState = 3;
% navMemory.kk_temp = 0;
% end
% elseif navMemory.lastPos(2)>950
% targVel=-targVel;
% if navMemory.kk_temp >10
% navMemory.navState = 3;
% navMemory.kk_temp = 0;
% end
% elseif navMemory.lastPos(2)<-950
% targVel=-targVel;
% if navMemory.kk_temp >10
% navMemory.navState = 3;
% navMemory.kk_temp = 0;
% end
% end end
Is there a way of sensibly shortening this? navMemory.lasPos is a variable with 2 values. I need these values to remain between 950 and -950, otherwise case 3 is called. This seems like a needlessly complicated way of doing it. (kk_temp is just a timer)
Many thanks as usual!

답변 (1개)

Zoltán Csáti
Zoltán Csáti 2014년 12월 23일
Since rows navMemory.navState = 3; and navMemory.kk_temp = 0; occur under the same condition (navMemory.kk_temp >10), you can put that condition outside. So
if navMemory.kk_temp >10
navMemory.navState = 3;
navMemory.kk_temp = 0;
end
if navMemory.lastPos(1)>950
targVel=-targVel;
elseif navMemory.lastPos(1)<-950
targVel=-targVel;
elseif navMemory.lastPos(2)>950
targVel=-targVel;
elseif navMemory.lastPos(2)<-950
targVel=-targVel;
end
  댓글 수: 3
Alex
Alex 2014년 12월 23일
Thank you - very good point! Is there any way of writing the following:
if -950<navMemory.lastPos>950
targVel=-targVel;
end
Thanks
Zoltán Csáti
Zoltán Csáti 2014년 12월 23일
Yes, but you wrote you want navMemory.lastPos remain between -950 and 950. So
if navMemory.lastPos > -950 & navMemory.lastPos <950
...
end

이 질문은 마감되었습니다.

Community Treasure Hunt

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

Start Hunting!

Translated by