2016-12-09 2 views
0

matlab 함수에서 'for'루프를 만들었습니다. 내가 원하는 것은 미리 정해진 반복 수 (최대 단계) 동안 루프를 실행하는 것이지만, 가장 최근 결과 F (단계)와 이전 결과 F (단계 -1) 사이의 차이가 지정된 임계 값보다 작 으면 짧은 루프를 절단 :MATLAB : 루프 프로세스 중단

for steps = 1:maxsteps 

    (various calculations) 

if F(steps) - F(steps-1) < 0.001 
    Break 
end 
end 

은 F (단계), 각 루프 반복마다에 다른 두 값 간의 합을 수행하여 새로운 컬럼을 '얻는다'는 N (=에 maxsteps) 차원 벡터이다 : F (단계) = a + b.

가정 maxsteps 8 (또는 정수)이다 나는 다음과 같은 오류 얻을 기능을 실행할 때 :

첨자 지수는 실제 양의 정수 또는 전에 논리 여야합니다.

중단없이 함수를 실행하면 완벽하게 작동하지만 (물론 임계 값의 옵션이 손실 됨).

EDIT [1] : 이제 문제를 다시 보았습니다. 문제는 첫 번째 반복에서 발생했을 것으로 생각됩니다. 왜냐하면 steps = 1 일 때 F (1) - F (0) < 0.001로 가정하기 때문에 불가능합니다. 그 문제를 해결하기 위해 뭔가 생각할 필요가 있습니다.

답변

0

(당신이 언급 한대로) 문제는 루프를 통해 처음으로,이 작업을 수행하는 것입니다 :

F(1) - F(0) < 0.0001 

이 제로 인덱스가 잘못과 오류의 원인.

대신 원하는 것은 0 번 색인을 피하기 위해 루프를 한 번 이상 실행하는 것입니다. 따라서 if 문에 조건부를 추가 할 수 있습니다. 제 false가 평가되면

if steps > 1 && (F(steps) - F(steps-1)) < 0.0001 

논리의 사용 및 (&&)가 제 2 조건을 평가할 수 없다.

+0

내가 MATLAB (&&)에서 그 작업을 수행 할 수 있는지 알지 못했습니다. 감사! – Jespar